您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Session.update和HibernateTemplate.merge进行的Hibernate更新之间的区别

Session.update和HibernateTemplate.merge进行的Hibernate更新之间的区别

在第一个操作中,对象ss 到会话。在第二次手术中它是 。因此,如果您有附加的对象,则可以使用update。如果您有一个分离的对象,则使用合并,该合并 对象 到会话,然后进行 。

编辑:有关附加的(持久的)和分离的对象的信息:

Hibernate定义并支持以下对象状态:

-如果对象只是使用new运算符实例化的,则该对象是瞬态的,并且它与Hibernate Session无关。它在数据库中没有持久性表示形式,也没有分配标识符值。如果应用程序不再拥有引用,则瞬态实例将被垃圾收集器破坏。使用Hibernate会话使对象持久化(并让Hibernate处理此转换需要执行的sql语句)。

-持久实例在数据库中具有表示形式和标识符值。它可能只是被保存或加载,但是根据定义,它在Session范围内。当工作单元完成时,Hibernate将检测对处于持久状态的对象所做的任何更改,并将该状态与数据库同步。当应将对象设置为瞬态时,开发人员不会执行手动的UPDATE语句或DELETE语句。

-分离的实例是已持久的对象,但其会话已关闭。当然,对对象的引用仍然有效,并且分离的实例甚至可以在此状态下进行修改。分离的实例可以在稍后的时间点重新附加到新的Session,使其(以及所有修改)再次持久。此功能为需要用户思考时间的长时间运行的工作单元启用了编程模型。我们称它们为应用程序交易,即从用户角度来看的一个工作单元。

其他 2022/1/1 18:13:58 有651人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶