欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

hibernate 常用方法介紹

 更新時(shí)間:2013年09月22日 15:05:44   作者:  
這篇文章介紹了hibernate的常用方法,有需要的朋友可以參考一下
一、hibetnateTemplate常用方法

1、delete(Object entity) 刪除指定的持久化實(shí)例
在程序中一般先用    Assert.notNull和 Assert.isTrue斷言entity是否為空 和 entity的id是否大于0若
否則事務(wù)回滾。再用get(Class entityClass,Serializable id,LockMode lockMode)加鎖查詢出持久
化實(shí)例,一般用lockMode.update悲觀鎖,最后用delete(Object entity)來(lái)刪除此實(shí)例。

2、deleteAll(Collection entities) 刪除集合內(nèi)全部持久化實(shí)例
entities必須為持久化實(shí)例,否則報(bào)數(shù)據(jù)庫(kù)異常錯(cuò)誤。

3、find(String queryString) 根據(jù)HQL查詢字符串來(lái)返回實(shí)例集合
find方法在執(zhí)行時(shí)會(huì)先查找緩存,如果緩存找不到再查找數(shù)據(jù)庫(kù),如果再找不到就會(huì)返回null。

4、get(Class entityClass,Serializable id)根據(jù)主鍵加載特定持久化實(shí)例
在程序中一般先用     Assert.isTrue斷言id是否大于0,若大于0繼續(xù)執(zhí)行,若查到數(shù)據(jù)則返回實(shí)例,否則返回空
不同于load,load若有數(shù)據(jù)則返回實(shí)例,否則報(bào)出ObjectNotFoundEcception異常,相比來(lái)說(shuō)get效率高些

5、save(Object entity) 保存新的實(shí)例
在程序中一般先用    Assert.notNull斷言實(shí)體是否為空,在進(jìn)行保存。

6、saveOrUpdate(Object entity)根據(jù)實(shí)例的狀態(tài)選擇保存或者是更新
此方法同時(shí)包含了save與update方法的功能,如果傳入的參數(shù)是臨時(shí)對(duì)象vo 沒(méi)有id,就調(diào)用save方法;如果傳
入的參數(shù)是游離對(duì)象有id,就調(diào)用update()方法;如果傳入的參數(shù)是持久化對(duì)象po,就直接返回。

7、update(Object entity) 更新實(shí)例的狀態(tài) 實(shí)例必須為持久化狀態(tài)
在程序中一般先用    Assert.notNull和 Assert.isTrue斷言entity是否為空 和 entity的id是否大于0,
然后在更新實(shí)例,entity必須含有id否則不能更新。

8、Object execute(hibetnateCallback action)是HibernateCallback接口類(lèi)。
當(dāng)dao中的方法不能滿足程序需要時(shí)可以考慮用此方法。如:根據(jù)幾個(gè)不同參數(shù)需要返回唯一實(shí)體時(shí)用uniqueResult()返回。
HibernateCallback里面定義了一個(gè)doInHibernate的方法,這個(gè)方法是可變的。如果要查找數(shù)據(jù)方法應(yīng)該就
是:session.load()。刪除數(shù)據(jù)就是session.delete().這樣的話查詢數(shù)據(jù)庫(kù)的方法用execute方法。

 
9、bulkUpdate()通過(guò)語(yǔ)句直接增加、更新、刪除實(shí)體
一般有bulkUpdate(String sqlString) 和 bulkUpdate(String sqlString,Object[] object)兩個(gè)
方法,返回增加,更新,或者刪除的數(shù)量一般用于批量。
 
10、hibernate主鍵生成策略
 
(1)Assigned: 在插入數(shù)據(jù)的時(shí)候主鍵由用戶自己添加。如:<generator class="assigned"/>
(2)sequence: 調(diào)用數(shù)據(jù)庫(kù)的sequence來(lái)生成主鍵,要設(shè)定序列名,否則hibernate無(wú)法找到。
如:<param   name="sequence">ENTTY_NAME_SEQ</param>
(3)increment 插入數(shù)據(jù)的時(shí)候hibernate會(huì)給主鍵添加一個(gè)自增的主鍵,但是一個(gè)hibernate實(shí)例就維護(hù)一個(gè)計(jì)數(shù)器,
所以在多個(gè)實(shí)例運(yùn)行的時(shí)候不能使用這個(gè)方法。

11、實(shí)體對(duì)象的三種狀態(tài)
Session的生命周期綁定在一個(gè)物理的事務(wù)(tansaction)上面。
Session的主要功能是提供對(duì)映射的實(shí)體類(lèi)實(shí)例的創(chuàng)建,讀取和刪除操作
(1)自由狀態(tài)(transient): 不曾進(jìn)行持久化,未與任何Session相關(guān)聯(lián)
(2)持久化狀態(tài)(persistent): 僅與一個(gè)Session相關(guān)聯(lián)
持久化實(shí)例可以通過(guò)調(diào)用 delete()變成游離狀態(tài)。通過(guò)get()或load()方法得到的實(shí)例都是持久化狀態(tài)的
(3)游離狀態(tài)(detached): 已經(jīng)進(jìn)行過(guò)持久化,但當(dāng)前未與任何Session相關(guān)聯(lián)
游離狀態(tài)的實(shí)例可以通過(guò)調(diào)用update(),lock(),replicate(),save(),persist()或者saveOrUpdate()方法進(jìn)行持久化

相關(guān)文章

  • Springboot+Vue+shiro實(shí)現(xiàn)前后端分離、權(quán)限控制的示例代碼

    Springboot+Vue+shiro實(shí)現(xiàn)前后端分離、權(quán)限控制的示例代碼

    這篇文章主要介紹了Springboot+Vue+shiro實(shí)現(xiàn)前后端分離、權(quán)限控制的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • idea導(dǎo)入配置Spring?Boot項(xiàng)目的詳細(xì)步驟教程

    idea導(dǎo)入配置Spring?Boot項(xiàng)目的詳細(xì)步驟教程

    這篇文章主要給大家介紹了關(guān)于idea導(dǎo)入配置Spring?Boot項(xiàng)目的詳細(xì)步驟,在項(xiàng)目開(kāi)發(fā)過(guò)程中,無(wú)論是導(dǎo)入運(yùn)行團(tuán)隊(duì)開(kāi)發(fā)的項(xiàng)目,還是一些開(kāi)源項(xiàng)目,還是其他的項(xiàng)目,想要在IDEA中完整的運(yùn)行起來(lái)總有很多坑,需要的朋友可以參考下
    2023-08-08
  • HTTPClient如何在Springboot中封裝工具類(lèi)

    HTTPClient如何在Springboot中封裝工具類(lèi)

    這篇文章主要介紹了HTTPClient如何在Springboot中封裝工具類(lèi)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Springboot如何使用Aspectj實(shí)現(xiàn)AOP面向切面編程

    Springboot如何使用Aspectj實(shí)現(xiàn)AOP面向切面編程

    這篇文章主要介紹了Springboot如何使用Aspectj實(shí)現(xiàn)AOP面向切面編程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java實(shí)現(xiàn)單機(jī)限流

    java實(shí)現(xiàn)單機(jī)限流

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)單機(jī)限流,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • SpringCloud Ribbon負(fù)載均衡代碼實(shí)例

    SpringCloud Ribbon負(fù)載均衡代碼實(shí)例

    這篇文章主要介紹了SpringCloud Ribbon負(fù)載均衡代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 基于Java實(shí)現(xiàn)獲取本地IP地址和主機(jī)名

    基于Java實(shí)現(xiàn)獲取本地IP地址和主機(jī)名

    這篇文章主要介紹了基于Java實(shí)現(xiàn)獲取本地IP地址和主機(jī)名,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java實(shí)現(xiàn)單例模式之餓漢式、懶漢式、枚舉式

    Java實(shí)現(xiàn)單例模式之餓漢式、懶漢式、枚舉式

    本篇文章主要介紹了Java實(shí)現(xiàn)單例的3種普遍的模式,餓漢式、懶漢式、枚舉式。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • 全面解釋java中StringBuilder、StringBuffer、String類(lèi)之間的關(guān)系

    全面解釋java中StringBuilder、StringBuffer、String類(lèi)之間的關(guān)系

    String的值是不可變的,這就導(dǎo)致每次對(duì)String的操作都會(huì)生成新的String對(duì)象,不僅效率低下,而且大量浪費(fèi)有限的內(nèi)存空間,StringBuffer是可變類(lèi),和線程安全的字符串操作類(lèi),任何對(duì)它指向的字符串的操作都不會(huì)產(chǎn)生新的對(duì)象,StringBuffer和StringBuilder類(lèi)功能基本相似
    2013-01-01
  • RxJava2 Scheduler使用實(shí)例深入解析

    RxJava2 Scheduler使用實(shí)例深入解析

    這篇文章主要為大家介紹了RxJava2 Scheduler使用實(shí)例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10

最新評(píng)論