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

Какой опыт с аннотацией Transactional в Spring

Аннотация @Transactional в Spring используется для управления транзакциями. Она упрощает декларативное управление транзакциями без необходимости явного кода.

Ключевые особенности:

  • Работает на уровне методов или классов.
  • Поддерживает propagation (REQUIRED, REQUIRES_NEW и др.), isolation, timeout, read-only режим.
  • По умолчанию работает только с unchecked исключениями (RuntimeException). Для checked исключений нужно указывать rollbackFor.

Пример:

java
@Service
public class UserService {
    @Transactional
    public void updateUser(User user) {
        // Бизнес-логика, работа с БД
    }

    @Transactional(propagation = Propagation.REQUIRES_NEW, 
                   rollbackFor = Exception.class)
    public void createUser(User user) throws Exception {
        // Логика с возможным checked исключением
    }
}

Нюансы:

  • Проксирование: @Transactional работает через AOP, поэтому вызов метода внутри того же класса (без прокси) не активирует транзакцию.
  • Для тестирования можно использовать @Transactional в тестах с автоматическим откатом.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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