Это потому, что объекты уже находятся в памяти, а в спящем режиме они уже сохранены. Когда приложение запускается, hiberante загружает объекты в память по мере необходимости (отложенная выборка), если не указано иное. Когда объект изменяется программно , Hibernate сохраняет объект в базе данных. Вам не нужно использовать save()
, просто commit()
. save
только для новых созданных объектов, а update()
для повторного присоединения отсоединенных объектов к сеансу.
Вы не можете изменить данные базы данных, не используя hibernate, и ожидайте, что hibernate осознает, что база данных изменилась. Вы должны изменить данные, используя методы hibernate session
.
Если вы изменяете данные, не используя hibernate, и вы хотите, чтобы hibernate переименовал объект, используйте метод session.refresh()
, чтобы перезагрузить объект в память из базы данных. Таким образом, изменения в базе данных будут отражены в объекте, загруженном в память.
Дополнительная информация в Глава 10 документации Hibernate