Hibernate中保存与持久性以及saveOrUpdate之间的区别
保存与保存或更新与持久保存在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之间的区别相关推荐
- SQL Server中唯一索引和唯一约束之间的区别
This article gives you an overview of Unique Constraints in SQL and also the Unique SQL Server index ...
- hibernate中get方法和load方法的根本区别
hibernate中get方法和load方法的根本区别 如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来 ...
- IO多路复用中select、poll、epoll之间的区别
本文来说下IO多路复用中select.poll.epoll之间的区别 文章目录 什么是IO多路复用 为什么有IO多路复用机制 同步阻塞(BIO) 同步非阻塞(NIO) IO多路复用(现在的做法) 3种 ...
- 解析java中方法的重载和重写之间的区别与联系
解析java中方法的重载和重写之间的区别与联系 1 不同点 1.1 方法重写是在不同的类中(父子类),方法重载是在同一类中 1.2 方法重载最初的目的是构造方法的多样化,方法重写的目的是让重写的方法满 ...
- Java Persistence API中的FetchType LAZY和EAGER之间的区别?
我是Java Persistence API和Hibernate的新手. Java Persistence API中的FetchType.LAZY和FetchType.EAGER什么区别? #1楼 我 ...
- 计算机关闭和注销的区别,你可知道windows系统中注销、关机、休眠之间的区别吗...
我们在日常的使用计算机中,如果你有足够细心的话,也许你会好奇当你想关闭计算机的时候,注销.关机.睡眠这3者之间的区别是什么呢?我们在操作电脑的时候,会通过关机.注销.休眠等各种方式来让电脑停止工作.但 ...
- .NET中小数,浮点数和双精度之间的区别?
.NET中的decimal , float和double float什么区别? 有人什么时候会使用其中之一? #1楼 对我来说,这是一个有趣的话题,因为今天,我们遇到了一个讨厌的小错误,涉及到deci ...
- Vue中computed、methods和watch之间的区别
对于那些开始学习Vue的人来说,对于方法.计算属性和观察者之间的区别有点混淆. 尽管通常可以使用它们中的每一个来完成或多或少相同的事情,但了解每个人在哪里胜过其他人还是很重要的. 在这个快速提示中,我 ...
- Scala中Unit、Nothing和Null之间的区别概述
在Scala中,Unit.Nothing和Null是三个比较特殊的数据类型,三者之间的区别如下: Unit 类似于Java中的void,表示没有返回值,用于不返回任何结果的方法的结果类型. 只有一个实 ...
最新文章
- 语义分割领域开山之作:Google提出用神经网络搜索实现语义分割
- linux虚拟机漏洞修复,linux幽灵漏洞检测和修复方法
- 网易云助力云音乐短视频功能快速上线
- Android ViewGroup点击效果(背景色)
- 【Qt串口调试助手】1.5 - 发送/接收字节数量统计
- 在Vue中为什么需要组合API
- docker 错误:Error response from daemon: cannot stop container: connect: connection refused: unknown...
- git入门:安装配置 创建版本库
- PyQt5-网格布局(QGridLayout)-10
- C#学习笔记29——c#使用word、excel、pdf
- 全减器及其相关概念的理解
- 万卷书 - 如何在股市中赚钱 How to Make Money in Stocks
- MAC 安装 kafka
- Oracle 11g 通过透明网关访问瀚高数据库
- 地方棋牌游戏里的家乡情结
- Unity3D引擎入门搭建一个FPS游戏Demo
- 2021电赛备赛心路历程(含代码例程)
- 电吉他伤感独奏曲《永远之后》张俊文
- android 多图分享到微信,Android 微信分享 多张图片
- PDF文件转PPT怎么做?教你两个好用的法子
热门文章
- 【2018.3.17】模拟赛之二-ssl1862jzoj1366 删数【区间dp】
- Codeforces Round #656 (Div. 3)
- 【桶排】小 X 的密码破译
- codeforces gym-101673 Twenty Four, Again 24点,枚举表达式树过题
- ssh免密登陆失败原因总结(Linux)
- IntelliJ IDEA 源值1.5已过时,将在未来所有版本中删除
- NLP Coursera By Michael Collins - Week1
- 聊聊并发(四)深入分析ConcurrentHashMap
- Java IO: RandomAccessFile
- Oracle入门(十二H)之设置、恢复和删除不可用列