Встречается на собеседованиях • сегодня
Как лучше использовать аннотацию Transactional в Spring
Аннотация @Transactional в Spring управляет транзакциями на уровне метода или класса. Основные рекомендации:
- Размещение: Лучше ставить на сервисный слой, а не на DAO/репозитории, чтобы охватить бизнес-логику целиком.
- Распространение (propagation):
REQUIRED(по умолчанию) – использует текущую транзакцию или создает новую.REQUIRES_NEW– всегда создает новую транзакцию.
- Изоляция (isolation): Например,
READ_COMMITTEDдля предотвращения "грязного" чтения. - Только для чтения:
readOnly=trueоптимизирует запросы, если изменений данных нет.
Пример:
java
@Service
public class UserService {
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
public void updateUser(User user) {
// бизнес-логика
}
}Важно: Избегайте вызовов @Transactional-методов внутри одного класса – это обходит AOP-прокси. Используйте self-инъекцию или выносите в отдельный компонент.

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