休眠:保存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.pswp.cn/news/371645.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371645.shtml
英文地址,請注明出處:http://en.pswp.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手…