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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中的语句有哪些_java中的循环语句有哪些

Java中有三种主要的循环结构:while 循环do…while 循环for 循环顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。一、while循环语法:while( 布尔表达式 ) {     //循环内容   }只要符合布尔表达…

php无法新数据类型,新手入门PHP必知的七种数据类型

想要入门PHP,首先要学会搭建环境,其次是学习基础语法。PHP的基础包括数据类型,运算符,变量和常量等。在这篇文章中,我们主要了解什么是数据类型。数据类型是指同种数据的一个统称,一般会描述为XX数据类型。…

攻防世界web高手进阶php_rce,php_rce 攻防世界xctf web

php_rce首先了解ThinkPHP5.x rec 漏洞分析与复现https://blog.csdn.net/qq_40884727/article/details/101452478var_pathinfo的默认配置为s,我们可以通过$_GET[‘s’]来传参于是构造payloadhttp://111.198.29.45:30600/index.php?sindex/\think\App/invokefunction&functi…

具有InlfuxDB的Spring Boot和Micrometer第2部分:添加InfluxDB

自从我们添加了基本应用程序以来&#xff0c;是时候启动InfluxDB实例了。 我们将按照之前的教程进行操作&#xff0c;并添加一个docker实例。 docker run –rm -p 8086&#xff1a;8086 –name influxdb-本地influxdb 是时候在我们的pom上添加微米InfluxDB依赖项了 < dep…

使用比较器的nulls对具有null值的列表进行排序

你好朋友&#xff0c; 在本教程中&#xff0c;我们将看到如何使用Java 8 Comparator.nullsFirst在列表中的项目很少为空时如何对项目列表进行排序&#xff0c;以便将null视为列表中的最小元素。 –什么是比较器 – nullsFirst方法在Comparator中做什么 –排序具有非空名称的…

Jar Hell变得轻松–用jHades揭开类路径的神秘面纱

Java开发人员将不得不面对的最困难的问题是类路径错误&#xff1a; ClassNotFoundException &#xff0c; NoClassDefFoundError &#xff0c;Jar Hell&#xff0c; Xerces Hell和公司。 在本文中&#xff0c;我们将探究这些问题的根本原因&#xff0c;并了解最小的工具&#…

分度器中硒定位器的完整指南(示例)

在测试网站的功能时&#xff0c;特别是Web元素&#xff08;例如单选按钮&#xff0c;文本框&#xff0c;下拉列表等&#xff09;&#xff0c;您需要确保能够访问这些元素。 Selenium定位器正是出于这个目的&#xff0c;通过使用此命令&#xff0c;我们可以识别这些Web元素DOM&a…

wildfly管理控制台_WildFly 9 –别希望您的控制台像这样!

wildfly管理控制台每个人都可能听到这个消息。 周一发布了第一个WildFly 9.0.0.Alpha1版本。 您可以从wildfly.org网站上下载它&#xff0c;最大的变化是它是由一个新的功能配置工具构建的&#xff0c;该工具位于现在单独的核心发行版上&#xff0c;还包含一个新的Servlet发行版…

azure mysql sql,UiPath连接Azure Sql Server数据库

一、创建数据库在Azure中创建SQL数据库image更改防火墙设置&#xff0c;并设置客户端IP访问规则image二、安装数据源驱动在本地安装数据源驱动程序&#xff0c;保证可以正常接入到远程的数据库。如果不安装驱动程序&#xff0c;则会出现以下报错&#xff1a;[Microsoft][ODBC D…

linux 误删除mysql表能恢复吗,Linux误删数据恢复

引子指在键上飘&#xff0c;难免会湿手套。当你按下shiftdel键后&#xff0c;会不会突然心里凉透&#xff0c;当你执行rm -rf后&#xff0c;会不会马上去搜索哪个国家入境不需要签证。或者你还会遇到如下的情况&#xff1a;root4xem7:~# aliasalias cdrm -rfalias ddocker数据恢…

Apache Camel 3.1 –更多骆驼核心优化(第3部分)

我以前曾在博客中介绍过我们在下一个Camel 3.1版本中所做的优化 博客第1部分 博客第2部分 今天&#xff0c;我想简短介绍一下我们已经完成的最新开发&#xff0c;因为我们准备在本周末或下半年准备好构建和发布Camel 3.1。 从第2部分开始&#xff0c;我们设法在路由过程中将…

jvm jinfo 参数_jinfo:JVM运行时配置的命令行浏览

jvm jinfo 参数在最近的一些博客中&#xff08;特别是在对Java EE 7性能调优和优化以及WildFly性能调优的书中的评论中&#xff09;&#xff0c;我引用了自己过去在某些Oracle JDK命令行工具上的博客文章。 令我震惊的是&#xff0c;我从来没有专门解决过漂亮的jinfo工具&#…

49自动化测试中最常见的硒异常

开发人员将始终在编写代码时牢记不同的场景&#xff0c;但是在某些情况下&#xff0c;实现可能无法按预期工作。 相同的原则也适用于测试代码&#xff0c;该代码主要用于测试现有产品的功能&#xff0c;发现错误以及使产品100&#xff05;不受错误影响。 正确地说&#xff0c;…

鹰式价差matlab,鹰式期权:什么叫铁鹰式期权组合,蝶式价差期权?

蝶式期权套利 是利用 交割月份的价差进行 套期获利&#xff0c; 个方向相 反、 共享居中交割月份合约的跨期套利组成。是一种期权策略&#xff0c;风险有限&#xff0c;盈利也有限&#xff0c;是由一手牛市套利和一手熊市套利组合而成的。铁鹰式期权组合是牛市看跌价差期权组合…

angular8 rest_带有Angular JS的Java EE 7 – CRUD,REST,验证–第2部分

angular8 rest这是Angular JS承诺的Java EE 7的后续版本–第1部分 。 花了比我预期更长的时间&#xff08;找到时间来准备代码和博客文章&#xff09;&#xff0c;但是终于到了&#xff01; 应用程序 第1部分中的原始应用程序只是带有分页的简单列表&#xff0c;以及提供列表数…

带有Java Pojo作为输入输出示例的AWS Lambda函数

在上一教程中&#xff0c;我们看到了如何使用Java创建AWS Lambda函数&#xff0c;并传递了String作为输入&#xff0c;还返回了String作为Output。如果您是第一次创建lambda函数&#xff0c;我建议先阅读该教程。 在本教程中&#xff0c;我们将看到如何传递Java普通的旧Java对…

php右侧弹窗QQ客服,JavaScript_网页右侧悬浮滚动在线qq客服代码示例,网页右侧悬浮滚动QQ在线客服 - phpStudy...

网页右侧悬浮滚动在线qq客服代码示例网页右侧悬浮滚动QQ在线客服代码function myEvent(obj,ev,fn){if (obj.attachEvent){obj.attachEvent(onev,fn);}else{obj.addEventListener(ev,fn,false);};};function getbyClass(id,sClass){var oParent document.getElementById(id);va…

idea spark java,IntelliJ Idea 搭建spark 开发环境

笔者介绍的是在MAC环境下使用Idea搭建spark环境。环境:spark 2.0.0scala 2.11.8maven 3.9.9idea 151.Idea的安装.Idea可以在官网上下载。熟悉java的肯定都知道这个开发利器&#xff0c;可以在官网上进行下载&#xff0c;在此就不在赘述。有免费的和付费版本&#xff0c;对于我们…

optaplanner_OptaPlanner –具有真实道路距离的车辆路线

optaplanner在现实世界中&#xff0c;车辆路径问题&#xff08;VRP&#xff09;中的车辆必须走这条路&#xff1a;它们不能在客户之间直线行驶。 大多数VRP研究论文和演示都乐于忽略此实现细节。 和我一样&#xff0c;过去。 尽管使用道路距离&#xff08;而不是空中距离&#…

java中的jpa_JPA教程–在Java SE环境中设置JPA

java中的jpaJPA代表Java Persistence API&#xff0c;它基本上是一个规范&#xff0c;描述了一种将数据持久存储到持久存储&#xff08;通常是数据库&#xff09;中的方法。 我们可以将其视为类似于Hibernate之类的ORM工具的东西&#xff0c;除了它是Java EE规范的正式组成部分…