Встречается на собеседованиях • сегодня

Как выполнить транзакцию в Spring

В Spring транзакции можно управлять декларативно через аннотации или программно. Лучший способ — использовать @Transactional:

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);
    }
}

Ключевые моменты:

  1. Аннотация @Transactional автоматически открывает и закрывает транзакцию
  2. По умолчанию используется REQUIRED — если транзакция уже есть, метод присоединится к ней
  3. При исключении происходит откат (rollback)
  4. Можно настроить изоляцию, таймаут, режим только для чтения

Для работы нужно включить управление транзакциями через @EnableTransactionManagement.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы