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

Обновится ли сущность, если в транзакции обновить поля сущности и без вызова save

В JPA/Hibernate сущность обновится в БД даже без явного вызова save(), если изменения произошли внутри активной транзакции и транзакция завершилась успешно (commit). Это работает благодаря механизму автоматического "dirty checking".

Пример:

java
@Transactional
public void updateUser(Long userId) {
    User user = userRepository.findById(userId).orElseThrow();
    user.setName("New Name"); // Изменение будет сохранено при коммите
    // save() не вызывается явно
}

Условия для автоматического обновления:

  1. Сущность находится в состоянии managed (привязана к текущей сессии)
  2. Изменения происходят внутри транзакции
  3. Транзакция завершается успешно (commit)

Исключение: если используется readOnly=true в транзакции, изменения не сохранятся.

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

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

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

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