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

Приведи пример использования аннотации Transactional в Spring

Аннотация @Transactional в Spring управляет транзакциями на уровне метода или класса. Она автоматически открывает и закрывает транзакцию, а также обрабатывает откаты при исключениях.

Пример:

java
@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;
text
@Transactional
public void transferMoney(Long fromId, Long toId, BigDecimal amount) {
    User fromUser = userRepository.findById(fromId).orElseThrow();
    User toUser = userRepository.findById(toId).orElseThrow();
    
    fromUser.setBalance(fromUser.getBalance().subtract(amount));
    toUser.setBalance(toUser.getBalance().add(amount));
    
    userRepository.save(fromUser);
    userRepository.save(toUser);
}

}

text

Ключевые моменты:
- Метод выполняется в одной транзакции
- При RuntimeException транзакция откатывается
- Можно настроить propagation, isolation, timeout, readOnly
- По умолчанию работает только для public методов
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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