Встречается на собеседованиях • сегодня
Что произойдет если из нетранзакционного метода вызвать транзакционный
Вызов транзакционного метода из нетранзакционного не создаст новой транзакции, если используется стандартный механизм Spring AOP (проксирование). Транзакционные аннотации (@Transactional) работают только при вызове через Spring-прокси, а не при внутренних вызовах внутри класса.
Пример:
java
@Service
public class UserService {
public void nonTransactionalMethod() {
transactionalMethod(); // Транзакция НЕ будет создана!
}
@Transactional
public void transactionalMethod() {
// Логика с БД
}
}Решение:
- Вынести транзакционный метод в отдельный сервис
- Использовать самовызов через
AopContext.currentProxy() - Использовать програмное управление транзакциями через
TransactionTemplate

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