Как работает операция обновления в спящем режиме? - PullRequest
0 голосов
/ 04 октября 2011

В соответствии с документацией hibernate ниже приведено определение операции обновления

void update(Object object) throws HibernateException Обновите постоянный экземпляр с помощью идентификатора данного отдельного экземпляра.Если существует постоянный экземпляр с тем же идентификатором, генерируется исключение.Эта операция относится к ассоциированным экземплярам, ​​если сопоставление сопоставлено с cascade="save-update".

У меня возник вопрос относительно оператора Если существует постоянный экземпляр с тем же идентификатором, выдается исключение. ,Я думаю, когда он говорит, что если существует постоянный экземпляр с тем же идентификатором, это означает, что если сеанс (в котором мы выполняем операцию обновления) уже содержит постоянный экземпляр с тем же идентификатором, будет выдано исключение.Но если кэш второго уровня содержит постоянный экземпляр с тем же идентификатором, операция обновления обновит объект., Он не выдаст исключение Правильно?

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

Нет, оператор говорит о сеансе, а не о кеше второго уровня. Кэш второго уровня работает на уровне фабрики сеансов и существует до тех пор, пока фабрика сеансов жива. И если объект с таким же идентификатором связан с сеансом (не кеш второго уровня), то будет выдано только исключение Если нет, то он обновит объект в базе данных, а также в кеше второго уровня.

0 голосов
/ 04 октября 2011

Согласовано. Обновление не должно вызывать исключение, если экземпляр с тем же идентификатором находится в кэше второго уровня.

Выделенное предложение не очень понятно, но я думаю, что вы правы в своем предположении. Возможно, вы могли бы прокомментировать форумы http://jboss.org и посмотреть, смогут ли они уточнить формулировку, возможно, даже улучшить ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...