Подтвердить что ты не робот

Что такое грязная сессия Hibernate?

Мне было интересно, может ли кто-нибудь сказать мне, что такое грязная сессия в спящем режиме? Кажется, у меня проблема, когда запрос критериев выполняет вставку, когда она не должна. Я считаю, что это связано с грязной сессией, но, не зная, что такое грязная сессия, я не могу решить свою проблему. Кроме того, как вы создаете грязный сеанс. Благодарю.

4b9b3361

Ответ 1

Спящий сеанс - это кеш. Он кэширует объекты, считываемые из базы данных, а также кэширует изменения, внесенные вами в сущности, которые он содержит, а также добавленные и удаленные объекты до тех пор, пока сеанс не будет очищен (т.е. все ожидающие изменения будут записаны в базу данных).

Сессия считается грязной, когда некоторые изменения еще не очищены. И поэтому совершенно нормально иметь грязную сессию. Сеанс очищается до совершения транзакции.

Ответ 2

Грязная сессия в Hibernate - это когда вы загружаете объект внутри сеанса и затем изменяете его.

Или, когда вы открываете сеанс и создаете новый объект.

Даже если вы явно не вызываете какую-либо операцию вставки/обновления, Hibernate отмечает сеанс как грязный и сохраняет изменения при закрытии сеанса

Ответ 3

Это просто означает, что вы внесли изменения в встроенные в память, управляемые, постоянные объекты, которые еще не были сброшены в базу данных.

В принципе идея спящего режима заключается в том, что состояние постоянных объектов в памяти - это состояние приложения. Если вы вносите изменения в управляемый объект, hibernate собирается поместить это в базу данных при следующей возможности. Вы не должны делать "временные" изменения для управляемых объектов, которые вы не намереваетесь стать постоянными, потому что они будут!

Перед выполнением запроса hibernate сбрасывает состояние памяти всех управляемых объектов в базу данных, чтобы запрос был точным относительно состояния вашего приложения.

Ответ 4

Простыми словами: Как известно, грязные данные - это те, которые еще не совершены. Точно так же грязный сеанс в спящем режиме содержит измененные данные, которые еще не выполнены.