Ответ 1
Поскольку спящий режим будет автоматически обнаруживать изменения, внесенные в постоянные объекты, и соответственно обновлять базу данных. Это поведение описано в главе 11 справочного руководства по спячке. Соответствующая часть гласит:
Hibernate определяет и поддерживает следующие состояния объектов:
Transient - объект является переходным, если он только что был создан с использованием нового оператора и не связан с сеансом Hibernate. Он не имеет постоянного представления в базе данных и не присвоено значение идентификатора. Временные экземпляры будут уничтожены сборщиком мусора, если приложение больше не содержит ссылку. Используйте сеанс Hibernate, чтобы сделать объект постоянным (и пусть Hibernate позаботится о операторах SQL, которые должны быть выполнены для этого перехода).
Persistent - постоянный экземпляр имеет представление в базе данных и значение идентификатора. Это может быть просто сохранено или загружено, однако оно по определению входит в сферу сеанса. Hibernate будет обнаруживать любые изменения, сделанные для объекта в постоянном состоянии, и синхронизировать состояние с базой данных, когда блок работы завершается. Разработчики не выполняют инструкции вручную UPDATE или DELETE, когда объект должен быть временным.
Отдельно - отдельный экземпляр - это объект, который был постоянным, но его сеанс закрыт. Ссылка на объект по-прежнему действительна, конечно, и отдельный элемент может быть даже изменен в этом состоянии. Отключенный экземпляр может быть повторно подключен к новому сеансу в более поздний момент времени, делая его (и все изменения) постоянным снова. Эта функция позволяет использовать модель программирования для длительных рабочих единиц, для которых требуется время мышления пользователя. Мы называем их транзакциями приложений, т.е. Единицей работы с точки зрения пользователя.