Как Hibernate dirty checking обнаруживает изменения?

Middle
257 просмотров
AFK Offer AI

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

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

Реализуйте пул потоков (простой ThreadPool) с BlockingQueue