保存与保存或更新与持久保存在Hibernate中
save和saveOrUpdate之间的区别是什么,或者save和persist之间的区别是任何Hibernate面试中常见的面试问题,就像Hibernate中get和load方法之间的区别一样。 Hibernate Session类提供了几种方法,可以通过诸如save,saveOrUpdate和
坚持。 您可以根据将对象持久化到数据库中的要求使用save(),saveOrUpdate()或persist()。 关键是所有这些对象都用于将数据存储到数据库中,但它们也使瞬态对象在Hibernate中保持不变。
Hibernate问题与Spring框架Interview问题一起 ,由于在ORM中的领先地位,在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。
![](https://i-blog.csdnimg.cn/blog_migrate/0e87407dddc7f8288bf5004152a0d50f.png)
在上一节中,我们看到了save和saveOrUpdate之间的区别是什么,现在我们将看到save与persist方法之间的区别。
1)save和persist之间的第一个区别是返回类型。 与保存方法类似,也将INSERT记录持久保存到数据库中,但是
持久的返回类型为空,而保存的返回类型为可序列化对象。
2)持久和保存之间的另一个区别是两种方法都可以
瞬时实例持久化。 但是,persist()方法不能保证将标识符值立即分配给持久实例,分配可能在刷新时发生。
该图还说明了Hibernate中持久性对象的生命周期,以及它如何从一种状态转移到另一种状态,例如从“瞬态到持久”到“持久”。
分离。 您可以看到save()和saveOrUpdate()方法都将对象从“瞬态”移动到“持久”状态。
![](https://i-blog.csdnimg.cn/blog_migrate/da2f745e3536fa75ff0bc3efc9411da7.png)
3)在Hibernate中区别持久化和保存方法的另一件事是它在事务边界外部的行为。 如果它在事务边界之外被调用,persist()方法保证不会执行INSERT语句。 save()方法不能保证相同,它返回一个标识符,并且如果必须执行INSERT来获取该标识符(例如“ identity”生成器),则无论您位于a的内部还是外部,此INSERT都会立即发生。交易。
这些是Hibernate的save,saveOrUpdate和persist方法之间的一些区别 。 这三种方法都与将对象保存到数据库有关,但是它们的行为却大不相同。 保存知识,
坚持并保存或更新OrOrUpdate不仅有助于决定如何更好地使用Hibernate API,而且还可以帮助您在Hibernate访谈中表现出色。
您可能喜欢的其他休眠文章和面试问题
- 2020 Java开发人员路线图( 指南 )
- Hibernate中一级和二级缓存之间的区别? ( 回答 )
- 学习Hibernate和JPA的前5门课程( 课程 )
- Hibernate中的get()和load()方法之间的区别? ( 回答 )
- 为Java开发人员提供的5个Spring和Hibernate培训课程( 列表 )
- 2本书从零开始学习休眠( 书籍 )
- 深入学习Spring框架的5本书( 书籍 )
- 为什么Hibernate Entity类在Java中不应该是final? ( 回答 )
- Java面试中的10个休眠问题( 列表 )
- 网上学习Spring和Hibernate的5大热门课程( 课程 )
- 学习Java微服务的5大热门课程( 课程 )
- Java开发人员的15个Spring Boot面试问题( 问题 )
- 每个Java开发人员都应该学习的5个Spring Boot功能( 功能 )
感谢您阅读本文,如果您喜欢本文和面试问题,请与您的朋友和同事分享。 如果您有任何问题或反馈,请发表评论。