При загрузке entity в persistence context Hibernate хранит snapshot — копию исходного состояния. При flush (конец транзакции или явный em.flush()) сравнивает текущее состояние с snapshot. Если поля изменились — генерирует UPDATE. Это работает автоматически: просто измени поле managed entity и не вызывай save() — Hibernate обновит БД. Недостаток: для большого количества entities в контексте — много сравнений. Детачи и clear() помогают. StatelessSession — без dirty checking, для batch processing.
Как Hibernate dirty checking обнаруживает изменения?
Middle
342 просмотровAFK Offer AI
Как анализировать thread dump для поиска deadlock?