Проблема с шаблоном Hibernate - PullRequest
       4

Проблема с шаблоном Hibernate

1 голос
/ 26 августа 2010

Я использую hibernate для сохранения, обновления и удаления данных в моей базе данных, но у меня есть некоторые проблемы.

Например, у меня есть запрос на сохранение или обновление моих данных в базе данных

getHibernateTemplate().saveOrUpdate(client);
getHibernateTemplate().flush();

Когда я впервые запускаю свой сервер (TomCat) и сохраняю свои данные, все в порядке, в моей базе данных я вижу свои данные.

Если я удаляю данные и запускаю новое сохранение моего клиента, он выполняет обновление, а не вставку, даже если я удалил данные.

1 Ответ

2 голосов
/ 26 августа 2010

Это потому, что объекты уже находятся в памяти, а в спящем режиме они уже сохранены. Когда приложение запускается, hiberante загружает объекты в память по мере необходимости (отложенная выборка), если не указано иное. Когда объект изменяется программно , Hibernate сохраняет объект в базе данных. Вам не нужно использовать save(), просто commit(). save только для новых созданных объектов, а update() для повторного присоединения отсоединенных объектов к сеансу.

Вы не можете изменить данные базы данных, не используя hibernate, и ожидайте, что hibernate осознает, что база данных изменилась. Вы должны изменить данные, используя методы hibernate session.

Если вы изменяете данные, не используя hibernate, и вы хотите, чтобы hibernate переименовал объект, используйте метод session.refresh(), чтобы перезагрузить объект в память из базы данных. Таким образом, изменения в базе данных будут отражены в объекте, загруженном в память.

Дополнительная информация в Глава 10 документации Hibernate

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