休眠:保存vs持久并保存或更新

savesaveOrUpdate之间的区别是什么或savepersist之间的区别是任何Hibernate面试中常见的面试问题,就像Hibernate中get和load方法之间的区别一样。 Hibernate Session类提供了几种通过savesaveOrUpdatepersist等方法将对象保存到数据库中的方法。 您可以根据将对象持久存储到Database中的要求使用save()saveOrUpdate()persist() 。 Hibernate问题与Spring框架Interview问题一起 ,在J2EE访谈中也很受欢迎,因为它的地位非常重要。 在出现在任何J2EE采访中之前,最好先准备Hibernate的一些问题。 其中之一是savesaveOrUpdatepersist之间的区别 ,我们将在本文的Hibernate中看到这一点。

Hibernate中save和saveOrUpdate之间的区别

save and saveOrUpdate 方法 之间的主要区别save()生成一个新的标识符并将INSERT记录插入数据库,而saveOrUpdate可以根据记录的存在而进行INSERT或UPDATE。 显然, saveOrUpdate在使用方面更为灵活,但是它需要进行额外的处理才能找出表中是否已存在记录。 总而言之, save()方法通过INSERT SQL查询将记录保存到数据库中,生成一个新的标识符,然后将Serializable标识符back 。 另一方面,基于数据库中对象的存在,可以使用INSERT或UPDATE的saveOrUpdate()方法。 如果数据库中已存在持久性对象,则将执行 UPDATE SQL,并且如果数据库中没有对应的对象,则将运行INSERT。

Hibernate中保存和持久方法之间的区别

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

  1. save和persist之间的第一个区别是返回类型。 与保存方法persist类似,也将INSERT记录插入数据库,但是persist返回类型为void,而save的返回类型为Serializable对象。
  2. persist和保存之间的另一个区别是,这两种方法都使临时实例persist 。 但是, persist ()方法不能保证将标识符值立即分配给persist实例,分配可能在刷新时发生。
  3. 区别Hibernate中persist和保存方法的另一件事是在事务边界之外存在行为。 persist ()方法可确保如果在事务边界之外调用它,则不会执行INSERT语句。 save()方法不能保证相同,它返回一个标识符,并且如果必须执行INSERT来获取该标识符(例如“ identity”生成器),则无论您位于a的内部还是外部,此INSERT都会立即发生。交易。
  4. Hibernate中savepersist方法之间的第四个区别与先前的savepersist差异有关。 由于其上述persist方法在事务边界之外的行为,因此在具有扩展Session上下文的长时间对话中很有用。 另一方面,在具有扩展Session上下文的长时间对话中,保存方法不是很好。

这些是Hibernate的savesaveOrUpdatepersist方法之间的一些区别 。 这三种方法都与将对象保存到数据库有关,但是行为却大不相同。 有关savepersistsaveOrUpdate知识,不仅有助于决定如何更好地使用Hibernate API,而且还可以帮助您在Hibernate采访中做得更好。

别忘了分享!

参考:我们的JCG合作伙伴 Javin Paul在Javarevisited博客上提供了Hibernate中save,persist和saveOrUpdate之间的区别 。


翻译自: https://www.javacodegeeks.com/2012/09/hibernate-save-vs-persist-and.html

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

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

相关文章

php搜索数据库设计,PHP数据库搜索功能设计

其实搜索功能的设计很简单,几行代码就可以完成。下面是form表单。从表单发出的数据名为search,然后发送到../admin/article_SearchResult.php这个文件处理。下面讲下article_SearchResult.php这个文件如何实现搜索。$searchs $_POST[‘search‘];?>…

2016 Android Top 10 Library

过去的 2016 年,开源社区异常活跃,很多个人与公司争相开源自己的项目,让人眼花缭乱,然而有些项目只是昙花一现,有些项目却持久创造价值,为开发者提供了极大的便利,这些终究由时间来判断。今天&a…

集成JavaFX和Swing

我刚刚完成了对使用Swing的应用程序组件的重写,现在正在使用JavaFX,最后得到了与更大的swing应用程序集成的JavaFX组件。 这是一个很大的应用程序,重写花了我一段时间,最后一切都很好,我很高兴自己做到了。 您可能想在…

提示错误:“应为“providerInvariantName”参数的非空字符串。”

我在调试Petapoco的T4模版的时候&#xff0c;链接一直报如题那个错误。在定性问题为配置文件后找的原因如下&#xff1a; <connectionStrings><add name"这个不行" connectionString"Data Sourcexxx;Initial Catalog数据库名;User ID帐号;Password密码…

php oop面试题,PHP面试题 - 对面向对象的理解

具体的题目应该是&#xff1a;什么是面向对象&#xff1f;主要的特征是什么&#xff1f;当然还有很多类似的题目&#xff0c;如果你说一下你对面向对象的理解&#xff0c;或者是你对比一下面向过程等等&#xff0c;诸如此类吧&#xff1f;如果我来回答这个问题&#xff0c;我会…

NOIP2014自测(晚自习两节+上午两节 共5个小时)

昨天刚刚考完试然后就翘晚自习跟今天上午两节课的语文和英语做做noip2014的题目。然后去评测了一番。首先day1day2的t1基本都是模拟&#xff0c;一看就出思路那种&#xff0c;直接ac掉。代码如下 day1t1&#xff1a;#include<iostream>#define maxn 209using namespace s…

您在eXo平台上的第一个Juzu Portlet

菊珠是佛教的佛珠。 一句话&#xff0c;我相信您已经学到了什么&#xff0c;印象深刻吗&#xff1f; 好的&#xff0c;我在这里不谈论佛教。 Juzu还是一个用于快速开发Portlet&#xff08;以及即将推出的独立应用程序&#xff09;的新框架。 您可以在Juzu网站上找到所需的所有…

Spring注入方式及注解配置

一&#xff1a;基于xml的DI&#xff08;Dependency Injection&#xff09; 注入类型&#xff1a; 定义学生Student实体类和小汽车Car实体类&#xff1a;进行封装和生成ToString(),并自定义属性Car Student 123456789101112131415161718192021222324252627282930313233343536373…

java 切面 不执行,解决springboot的aop切面不起作用问题(失效的排查)

检查下springboot的启动类是否开启扫描springbootapplicationcomponentscan(basepackages {"com.zhangpu.springboot"})另外springboot默认开启的enableaspectjautoproxy为true如果不放心可以增加&#xff1a;enableaspectjautoproxy(proxytargetclasstrue)第二种可…

修改readonly属性的值

一般情况下&#xff0c;readonly属性的值是无法修改的&#xff0c;但可以通过特殊方式修改。定义一个student的类&#xff0c;其中name属性为readonly类型的变量 interface JFStudent : NSObjectproperty(nonatomic,copy,readonly) NSString *hisName;property(nonatomic,copy)…

VisualVM:通过SSH监视远程JVM(是否为JMX)

VisualVM是用于监视JVM&#xff08;5.0&#xff09;的有关内存使用情况&#xff0c;线程&#xff0c;GC&#xff0c;MBeans等的出色工具。让我们看看如何通过SSH使用它来监视&#xff08;甚至使用JMX对其进行采样&#xff0c;对带有JMX的远程JVM进行监视&#xff09;它。 这篇文…

h5 php js实验总结,H5学习_番外篇_PHP数据库操作

1. 文件操作1.1 打开关闭文件fopen()resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )?fopen()函数将resource绑定到一个流或句柄。绑定之后&#xff0c;脚本就可以通过句柄与此资源交互;例1:以只读方式打开一个位于本地服务…

ReactNative开发环境

此内容根据徐赢老师的文档整理后写处 原版地址&#xff1a;https://tuomaxu.gitbooks.io/reactnative/content/ ReactNative是跨平开发的解决方案&#xff0c;在开发平台的选择上&#xff0c;mac平台和win平台都可以。 所需要工具如下&#xff1a; 1&#xff0c;Nodejs环境 2&a…

Python自动化开发 - 字符串, 列表, 元组, 字典和和文件操作

一、字符串特性&#xff1a;字符串本身不可修改&#xff0c;除非字符串变量重新赋值。Python3中所有字符串都是Unicode字符串&#xff0c;支持中文。 >>> name "Jonathan" >>> name "Jonathan" "Ni" >>>print(na…

shiro java配置,InI 配置 - 跟我学 Apache Shiro_教程_Java开发社区

INI 配置之前章节我们已经接触过一些 INI 配置规则了&#xff0c;如果大家使用过如 Spring 之类的 IoC/DI 容器的话&#xff0c;Shiro 提供的 INI 配置也是非常类似的&#xff0c;即可以理解为是一个 IoC/DI 容器&#xff0c;但是区别在于它从一个根对象 securityManager 开始。…

在Spring容器外部连接对象依赖项

有几种有趣的方法可以设置在Spring容器外部实例化的对象的属性和依赖关系。 用例首先&#xff0c;为什么我们需要在Spring容器之外进行依赖注入–我知道三个用例&#xff0c;其中我实例化了Spring容器之外的对象并需要注入依赖。 首先考虑使用Spring TaskExecutor执行一系列任…

前端学习路线汇总

https://123.w3cschool.cn/plk2fihttps://www.w3cschool.cn/nodejs/nodejs-global-object.htmlnode.js转载于:https://www.cnblogs.com/sxz2008/p/7238773.html

MediaInfo源代码分析 1:整体结构

博客地址&#xff1a;http://blog.csdn.net/leixiaohua1020/article/details/12016231 MediaInfo源代码分析系列文章列表&#xff1a; MediaInfo源代码分析 1&#xff1a;整体结构MediaInfo源代码分析 2&#xff1a;API函数MediaInfo源代码分析 3&#xff1a;Open()函数MediaI…

测试RESTful服务的客户端

开发使用RESTful Web API的应用程序可能意味着开发服务器和客户端。 为服务器端编写集成测试可以像使用Arquillian来启动服务器一样容易&#xff0c;并且可以通过REST确保测试服务是否按预期工作。 问题是如何测试客户端。 在本文中&#xff0c;我们将了解如何使用模拟来测试客…

linux mysql误删,linux下MySQL安装与删除 (Ubuntu)

1、MySQL安装A)MySQL安装&#xff1a; sudo apt-get install mysql-server mysql-clientB)启动/停止MySQL服务&#xff1a;MySQL 在安装以后&#xff0c;MySQL 就已经启动&#xff1b;如果需要手动启动或停止则如下操作&#xff1a;手动启动服务&#xff1a; sudo start mysql手…