hibernate自动更新持久化类的问题?

有碰到过改变了一个持久化类的值但是没有主动更新到数据库,但是hibernate自动把值更新到数据库了。看了网上的一些帖子和解答感觉语焉不详,说什么持久化类只要做了改变hibernate就会自动更新到数据库,照这个说法我们都不用手动去做update操作了?另外没有显式的update操作我怎么知道hibernate什么时候去更新呢?求高人解答,最好能有hibernate的官方说明或文档。一般项目里很少有关注过这样的问题,我自己做的项目从来没出现过这个问题(不知道是不是我的代码没用那种方式),我同事也是偶然才碰到过,但是奇怪的是仅限于某几个类,换成另外的类就不会自动更新了,搞不懂为什么。另外hibernate这么做合适吗,有点太智能了吧?一般来说总是显式的调用update或merge再更新才合适啊。

阅读 4.1k
1 个回答

你的判断是对的,不提交更新是不会保存,启动事务autocommit自动变成false,不启动事务默认为true,只要是你计划修改持久化对象就最好启动事务,手动commit。还有你是不是持久化多个对象,update其他对象时,顺带就一起更新了。

从你的评论看起来接近原因,似乎就是hibernate不启动事务时,默认是auto commit缘故。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进