休眠:保存vs持久并保存或更新

savesaveOrUpdate之间的区别是什么或savepersist之间的区别是任何Hibernate面试中常见的面试问题,就像Hibernate中get和load方法之间的区别一样。 Hibernate Session类提供了几种通过savesaveOrUpdatepersist等方法将对象保存到数据库中的方法。 您可以根据将对象持久存储到Database中的要求使用save()saveOrUpdate()persist() 。 Hibernate问题与Spring框架Interview问题一起 ,在J2EE访谈中也很受欢迎,因为它的地位非常重要。 在出现在任何J2EE采访中之前,最好先准备Hibernate的一些问题。 其中之一是savesaveOrUpdatepersist之间的区别 ,我们将在本文的Hibernate中看到这一点。

Hibernate中save和saveOrUpdate之间的区别

save and saveOrUpdate 方法 之间的主要区别save()生成一个新的标识符并将INSERT记录插入数据库,saveOrUpdate可以根据记录的存在而进行INSERT或UPDATE。 显然, saveOrUpdate在使用方面更为灵活,但是它需要进行额外的处理才能找出表中是否已存在记录。 总而言之, save()方法通过INSERT SQL查询将记录保存到数据库中,生成一个新的标识符,然后将Serializable标识符back 。 另一方面,基于数据库中对象的存在,可以使用INSERT或UPDATE的saveOrUpdate()方法。 如果数据库中已存在持久性对象,则将执行 UPDATE SQL,并且如果数据库中没有对应的对象,则将运行INSERT。

Hibernate中保存和持久方法之间的区别

在上一节中,我们看到了savesaveOrUpdate之间的区别是什么,现在我们将看到save方法与persist方法的区别。

  1. save和persist之间的第一个区别是返回类型。 与保存方法persist类似,也将INSERT记录插入数据库,但是persist返回类型为void,而save的返回类型为Serializable对象。
  2. persist和保存之间的另一个区别是,这两种方法都使临时实例persist 。 但是, persist ()方法不能保证将标识符值立即分配给persist实例,分配可能在刷新时发生。
  3. 区别Hibernate中persist和保存方法的另一件事是在事务边界之外存在行为。 persist ()方法可确保如果在事务边界之外调用它,则不会执行INSERT语句。 save()方法不能保证相同,它返回一个标识符,并且如果必须执行INSERT来获取该标识符(例如“ identity”生成器),则无论您位于a的内部还是外部,此INSERT都会立即发生。交易。
  4. Hibernate中savepersist方法之间的第四个区别与先前的savepersist差异有关。 由于其上述persist方法在事务边界之外的行为,因此在具有扩展Session上下文的长时间对话中很有用。 另一方面,在具有扩展Session上下文的长时间对话中,保存方法不是很好。

这些是Hibernate的savesaveOrUpdatepersist方法之间的一些区别 。 这三种方法都与将对象保存到数据库有关,但是行为却大不相同。 有关savepersistsaveOrUpdate知识,不仅有助于决定如何更好地使用Hibernate API,而且还可以帮助您在Hibernate采访中做得更好。

别忘了分享!

参考:我们的JCG合作伙伴 Javin Paul在Javarevisited博客上提供了Hibernate中save,persist和saveOrUpdate之间区别


翻译自: https://www.javacodegeeks.com/2012/09/hibernate-save-vs-persist-and.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值