保存与保存或更新与持久保存在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。


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

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

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

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


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功能( 功能 )

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

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

Hibernate中保存与持久性以及saveOrUpdate之间的区别相关推荐

  1. SQL Server中唯一索引和唯一约束之间的区别

    This article gives you an overview of Unique Constraints in SQL and also the Unique SQL Server index ...

  2. hibernate中get方法和load方法的根本区别

    hibernate中get方法和load方法的根本区别 如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来 ...

  3. IO多路复用中select、poll、epoll之间的区别

    本文来说下IO多路复用中select.poll.epoll之间的区别 文章目录 什么是IO多路复用 为什么有IO多路复用机制 同步阻塞(BIO) 同步非阻塞(NIO) IO多路复用(现在的做法) 3种 ...

  4. 解析java中方法的重载和重写之间的区别与联系

    解析java中方法的重载和重写之间的区别与联系 1 不同点 1.1 方法重写是在不同的类中(父子类),方法重载是在同一类中 1.2 方法重载最初的目的是构造方法的多样化,方法重写的目的是让重写的方法满 ...

  5. Java Persistence API中的FetchType LAZY和EAGER之间的区别?

    我是Java Persistence API和Hibernate的新手. Java Persistence API中的FetchType.LAZY和FetchType.EAGER什么区别? #1楼 我 ...

  6. 计算机关闭和注销的区别,你可知道windows系统中注销、关机、休眠之间的区别吗...

    我们在日常的使用计算机中,如果你有足够细心的话,也许你会好奇当你想关闭计算机的时候,注销.关机.睡眠这3者之间的区别是什么呢?我们在操作电脑的时候,会通过关机.注销.休眠等各种方式来让电脑停止工作.但 ...

  7. .NET中小数,浮点数和双精度之间的区别?

    .NET中的decimal , float和double float什么区别? 有人什么时候会使用其中之一? #1楼 对我来说,这是一个有趣的话题,因为今天,我们遇到了一个讨厌的小错误,涉及到deci ...

  8. Vue中computed、methods和watch之间的区别

    对于那些开始学习Vue的人来说,对于方法.计算属性和观察者之间的区别有点混淆. 尽管通常可以使用它们中的每一个来完成或多或少相同的事情,但了解每个人在哪里胜过其他人还是很重要的. 在这个快速提示中,我 ...

  9. Scala中Unit、Nothing和Null之间的区别概述

    在Scala中,Unit.Nothing和Null是三个比较特殊的数据类型,三者之间的区别如下: Unit 类似于Java中的void,表示没有返回值,用于不返回任何结果的方法的结果类型. 只有一个实 ...

最新文章

  1. 语义分割领域开山之作:Google提出用神经网络搜索实现语义分割
  2. linux虚拟机漏洞修复,linux幽灵漏洞检测和修复方法
  3. 网易云助力云音乐短视频功能快速上线
  4. Android ViewGroup点击效果(背景色)
  5. 【Qt串口调试助手】1.5 - 发送/接收字节数量统计
  6. 在Vue中为什么需要组合API
  7. docker 错误:Error response from daemon: cannot stop container: connect: connection refused: unknown...
  8. git入门:安装配置 创建版本库
  9. PyQt5-网格布局(QGridLayout)-10
  10. C#学习笔记29——c#使用word、excel、pdf
  11. 全减器及其相关概念的理解
  12. 万卷书 - 如何在股市中赚钱 How to Make Money in Stocks
  13. MAC 安装 kafka
  14. Oracle 11g 通过透明网关访问瀚高数据库
  15. 地方棋牌游戏里的家乡情结
  16. Unity3D引擎入门搭建一个FPS游戏Demo
  17. 2021电赛备赛心路历程(含代码例程)
  18. 电吉他伤感独奏曲《永远之后》张俊文
  19. android 多图分享到微信,Android 微信分享 多张图片
  20. PDF文件转PPT怎么做?教你两个好用的法子

热门文章

  1. 【2018.3.17】模拟赛之二-ssl1862jzoj1366 删数【区间dp】
  2. Codeforces Round #656 (Div. 3)
  3. 【桶排】小 X 的密码破译
  4. codeforces gym-101673 Twenty Four, Again 24点,枚举表达式树过题
  5. ssh免密登陆失败原因总结(Linux)
  6. IntelliJ IDEA 源值1.5已过时,将在未来所有版本中删除
  7. NLP Coursera By Michael Collins - Week1
  8. 聊聊并发(四)深入分析ConcurrentHashMap
  9. Java IO: RandomAccessFile
  10. Oracle入门(十二H)之设置、恢复和删除不可用列