Встречается на собеседованиях • сегодня
Как работает транзакция в Spring Data JPA
Транзакция в Spring Data JPA обеспечивает атомарность операций с БД. Работает через аннотацию @Transactional, которая управляет открытием/закрытием транзакции автоматически.
Основные моменты:
- По умолчанию транзакция создается при вызове метода и завершается при его успешном выполнении (commit), либо откатывается при исключении (rollback).
- Распространяется на все вызовы методов репозитория внутри аннотированного метода.
Пример:
java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public void transferMoney(Long fromId, Long toId, BigDecimal amount) {
User from = userRepository.findById(fromId).orElseThrow();
User to = userRepository.findById(toId).orElseThrow();
from.setBalance(from.getBalance().subtract(amount));
to.setBalance(to.getBalance().add(amount));
userRepository.save(from);
userRepository.save(to);
}
}Нюансы:
- Можно настраивать propagation (REQUIRED, REQUIRES_NEW и др.)
- По умолчанию rollback только для RuntimeException
- Для проверяемых исключений нужно указывать
@Transactional(rollbackFor = Exception.class)

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы