![saveorupdate](https://img-blog.csdnimg.cn/img_convert/886d833d537bd2fc9ddc70c6f4186227.png)
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功能( 功能)
感谢您阅读本文,如果您喜欢本文和面试问题,请与您的朋友和同事分享。 如果您有任何疑问或反馈,请发表评论。
saveorupdate