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

Что будет, если не указать @Transactional при работе с репозиторием

Если не указать @Transactional, каждое обращение к репозиторию будет выполняться в отдельной транзакции. Это может привести к проблемам:

  1. Нет атомарности – если несколько операций должны выполняться как единое целое, при ошибке часть изменений сохранится, а часть – нет.
  1. LazyInitializationException – при попытке загрузить ленивые коллекции вне транзакции.

Пример:

java
// Без @Transactional
public void updateUser(User user) {
    userRepository.save(user);  // Транзакция 1
    auditRepository.logAction(); // Транзакция 2 - если упадёт, user всё равно сохранится
}

Для чтения можно использовать @Transactional(readOnly = true), для записи – просто @Transactional. В Spring Data JPA репозитории по умолчанию уже обёрнуты в транзакции, но для сервисного слоя лучше явно указывать аннотацию.

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

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

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

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