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的log计算_Java普通对数(log)计算方法

Java给我提供的数学计算的工具类Math计算对数的函数有两个:/*** Returns the natural logarithm (base e) of a {code double}* value. Special cases:* If the argument is NaN or less than zero, then the result* is NaN.* If the argument is positive infinit…

javaee编程题_在JavaEE中使用CDI的简单面向方面的编程(AOP)

javaee编程题我们编写满足特定业务逻辑的服务API。 涵盖所有服务API(如安全性,日志记录,审核,度量延迟等)的跨领域问题很少。 这是一个重复的非业务代码,可以在其他方法之间重用。 重用的一种方法是将这些重…

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

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

使用自动伸缩组在AWS中运行安全数据库集群

当您必须在AWS上运行可伸缩应用程序时,您的数据库也必须可伸缩。 扩展无状态应用程序层更容易,在无状态应用程序层中,每个节点大部分都是可使用的-即使3节点集群中的一个节点发生故障,您也可以启动另一个节点,而没人注…

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

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

java batch_Java EE 7 Batch中传递属性/参数的2种方式

java batch谈到Java EE 7批处理功能,有两种方法可以将属性/参数传递给块和批处理。 本快速指南向您展示了两种方式,在开发批处理Java EE 7方式时可能会经常使用它们。 1.运行前预定义的属性/参数 预定义属性是您在部署应用程序之前定义的属性&#xff0…

攻防世界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…

ci 地址去掉index.php,CI框架如何删除地址栏的 index.php

默认CI框架显示地址是http://localhost/ci/index.php/test/去PHP去掉index.php这样会更好些。1.修改Http.conf的LoadModule rewrite_module modules/mod_rewrite.so去掉注释2.ci根目录增加.htaccess文件RewriteEngine OnRewriteBase /ci#Removes access to the system folder b…

gradle的二进制版本_Gradle入门:创建二进制分发

gradle的二进制版本创建有用的应用程序后&#xff0c;很可能我们想与其他人共享它。 一种方法是创建一个可以从我们的网站下载的二进制发行版。 这篇博客文章描述了如何满足以下要求的二进制发行版&#xff1a; 我们的二进制分发不得使用所谓的“胖子”方法。 换句话说&#…

php auth和rbac区别,php中比rbac更好的权限认证的方式auth类认证

RBAC是按节点进行认证的&#xff0c;如果要控制比节点更细的权限就有点困难了&#xff0c;比如页面上面的操作按钮&#xff0c; 我想判断用户权限来显示这个按钮&#xff0c; 如果没有权限就不会显示这个按钮&#xff1b; 再比如我想按积分进行权限认证&#xff0c; 积分在0-10…

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

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

php 获取文件给用户下载,php 下载文件/直接下载数据内容

思路步骤* 定义参数* 魔术方法* 执行下载* 获取设置属性函数* 获取设置文件mime 类型* 获取设置下载文件名* 设置header* 下载函数实现代码class DownFile{// 定义参数public $data; // 下载的数据或文件名public $is_confalse; // 是否是下载内容public $down_file_name; // 下…

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

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

韩顺平php教程笔记,PHP笔记,韩顺平php笔记_PHP教程

PHP笔记&#xff0c;韩顺平php笔记Mysql-----------------------------------------------------------------------------Mysql 改默认密码update mysql.user set PasswordPASSWORD(123456) WHERE UserrootFLUSH PRIVILEGES去了解下MYSQL的范式、反范式、混合范式还有索引的建…

php键盘输入函数,php的常用输入语句以及常用函数

这篇文章主要介绍了关于php的常用输入语句以及常用函数&#xff0c;有着一定的参考价值&#xff0c;现在分享给大家&#xff0c;有需要的朋友可以参考一下一、 echo语句echo做php的人在熟悉不过了&#xff0c;在php文件中我们用他来输出数据。<?php echo "hi mm"…

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

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

ajax php 投票,PHP 实例 AJAX 投票

PHP 实例 - AJAX 投票AJAX 投票在下面的实例中&#xff0c;我们将演示一个投票程序&#xff0c;通过它&#xff0c;投票结果在网页不进行刷新的情况下被显示。你喜欢 PHP 和 AJAX 吗?是:否:实例解释 - HTML 页面当用户选择上面的某个选项时&#xff0c;会执行名为 "getVo…

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…