saveorupdate_Hibernate中保存与持久性以及saveOrUpdate之间的区别

saveorupdate

saveorupdate

保存与保存或更新与持久保存在Hibernate中

save和saveOrUpdate之间的区别是什么,或者save和persist之间的区别是任何Hibernate面试中常见的面试问题,就像Hibernate中get和load方法之间的区别一样。 Hibernate Session类提供了几种方法,可以通过诸如save,saveOrUpdate和坚持。 您可以根据将对象持久保存到数据库中的要求使用save(),saveOrUpdate()或persist()。 关键是所有这些对象都用于将数据存储到数据库中,但它们也使瞬态对象在Hibernate中保持不变。

Hibernate问题与Spring框架Interview问题一起,在Java面试中也很受欢迎,因为它的地位非常重要。 在出现任何问题之前,最好先准备好Hibernate的一些问题J2EE访谈。 其中之一是save,saveOrUpdate和persist之间的区别,我们将在本文的Hibernate中看到这一点。

save和saveOrUpdate方法之间的主要区别是:save()会在数据库中生成一个新的标识符和INSERT记录,而saveOrUpdate可以根据记录的存在来进行INSERT或UPDATE。 显然,saveOrUpdate在使用方面更为灵活,但它涉及额外的处理以找出表中是否已存在记录。

总而言之,save()方法通过INSERT SQL查询将记录保存到数据库中,生成一个新的标识符,然后将Serializable标识符返回。

另一方面,基于数据库中对象的存在,可以使用INSERT或UPDATE的saveOrUpdate()方法。 如果数据库中已经存在一个持久性对象,则将执行UPDATE SQL;如果数据库中没有相应的对象,则将运行INSERT。

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

1)save和persist之间的第一个区别是返回类型。 与保存方法类似,也将INSERT记录也保存到数据库中,但是持久的返回类型为空,而保存的返回类型为可序列化对象。

2)持久和保存之间的另一个区别是两种方法都可以瞬时实例持久化。 但是,persist()方法不能保证将标识符值立即分配给持久实例,分配可能在刷新时发生。

该图还说明了Hibernate中持久性对象的生命周期,以及它如何从一种状态移动到另一种状态,例如从Transient到Persistent到分离。 您可以看到save()和saveOrUpdate()方法都将对象从“瞬态”移动到“持久”状态。

3)在Hibernate中区别持久化和保存方法的另一件事是它在事务边界之外的行为。 persist()方法保证了如果在事务边界之外调用它,将不会执行INSERT语句。 save()方法不能保证相同,它会返回一个标识符,并且如果必须执行INSERT来获取标识符(例如“ identity”生成器),则无论您位于一个对象内部还是外部,此INSERT都会立即发生。交易。

这些是Hibernate的save,saveOrUpdate和persist方法之间的一些区别。 这三种方法都与将对象保存到数据库有关,但是它们的行为却大不相同。 保存知识,坚持并保存或更新OrOrUpdate不仅有助于决定更好地使用Hibernate API,而且还可以帮助您在Hibernate访谈中表现出色。

您可能喜欢的其他Hibernate文章面试问题

  • 2020 Java开发人员路线图( 指南)
  • Hibernate中一级和二级缓存之间的区别? ( 回答)
  • 学习Hibernate和JPA的前5门课程( 课程)
  • Hibernate中的get()和load()方法之间的区别? ( 回答)
  • 为Java开发人员提供的5项Spring和Hibernate培训课程( 列表)
  • 2本书从零开始学习Hibernate( 书籍)
  • 深入学习Spring框架的5本书( 书籍)
  • 为什么Hibernate Entity类在Java中不应该是final? ( 回答)
  • Java面试中的10个Hibernate问题( 列表)
  • 在线学习Spring和Hibernate的前五门课程( 课程)
  • 学习Java微服务的5大热门课程( 课程)
  • Java开发人员的15个Spring Boot面试问题( 问题)
  • 每个Java开发人员都应该学习的5个Spring Boot功能( 功能)

感谢您阅读本文,如果您喜欢本文和面试问题,请与您的朋友和同事分享。 如果您有任何疑问或反馈,请发表评论。

翻译自: https://www.javacodegeeks.com/2020/03/difference-between-save-vs-persist-and-saveorupdate-in-hibernate.html

saveorupdate

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值