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

Что такое Dirty Checking

Dirty Checking — это механизм в Hibernate, который автоматически определяет изменения в сущностях и синхронизирует их с БД при коммите транзакции. Hibernate сравнивает текущее состояние сущности с её первоначальным (закешированным) состоянием после загрузки из БД. Если есть различия — генерируется SQL-запрос на обновление.

Пример:

java
@Entity
public class User {
    @Id
    private Long id;
    private String name;
    // getters/setters
}

// В коде:
User user = session.get(User.class, 1L); // SELECT
user.setName("NewName"); // Изменение
// При session.flush() или транзакционном коммите автоматически выполнится UPDATE

Нюансы:

  • Работает только в рамках сессии
  • Требует attached-состояния сущности
  • Может быть отключен аннотацией @DynamicUpdate
  • Эффективнее, чем ручное управление обновлениями, но может создавать лишние запросы
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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