一、hibetnateTemplate常用方法
1、delete(Object entity) 刪除指定的持久化實例
在程序中一般先用 Assert.notNull和 Assert.isTrue斷言entity是否為空 和 entity的id是否大于0若
否則事務回滾。再用get(Class entityClass,Serializable id,LockMode lockMode)加鎖查詢出持久
化實例,一般用lockMode.update悲觀鎖,最后用delete(Object entity)來刪除此實例。
2、deleteAll(Collection entities) 刪除集合內全部持久化實例
entities必須為持久化實例,否則報數據庫異常錯誤。
3、find(String queryString) 根據HQL查詢字符串來返回實例集合
find方法在執行時會先查找緩存,如果緩存找不到再查找數據庫,如果再找不到就會返回null。
4、get(Class entityClass,Serializable id)根據主鍵加載特定持久化實例
在程序中一般先用 Assert.isTrue斷言id是否大于0,若大于0繼續執行,若查到數據則返回實例,否則返回空
不同于load,load若有數據則返回實例,否則報出ObjectNotFoundEcception異常,相比來說get效率高些
5、save(Object entity) 保存新的實例
在程序中一般先用 Assert.notNull斷言實體是否為空,在進行保存。
6、saveOrUpdate(Object entity)根據實例的狀態選擇保存或者是更新
此方法同時包含了save與update方法的功能,如果傳入的參數是臨時對象vo 沒有id,就調用save方法;如果傳
入的參數是游離對象有id,就調用update()方法;如果傳入的參數是持久化對象po,就直接返回。
7、update(Object entity) 更新實例的狀態 實例必須為持久化狀態
在程序中一般先用 Assert.notNull和 Assert.isTrue斷言entity是否為空 和 entity的id是否大于0,
然后在更新實例,entity必須含有id否則不能更新。
8、Object execute(hibetnateCallback action)是HibernateCallback接口類。
當dao中的方法不能滿足程序需要時可以考慮用此方法。如:根據幾個不同參數需要返回唯一實體時用uniqueResult()返回。
HibernateCallback里面定義了一個doInHibernate的方法,這個方法是可變的。如果要查找數據方法應該就
是:session.load()。刪除數據就是session.delete().這樣的話查詢數據庫的方法用execute方法。
9、bulkUpdate()通過語句直接增加、更新、刪除實體
一般有bulkUpdate(String sqlString) 和 bulkUpdate(String sqlString,Object[] object)兩個
方法,返回增加,更新,或者刪除的數量一般用于批量。
10、hibernate主鍵生成策略
(1)Assigned: 在插入數據的時候主鍵由用戶自己添加。如:<generator class="assigned"/>
(2)sequence: 調用數據庫的sequence來生成主鍵,要設定序列名,否則hibernate無法找到。
如:<param name="sequence">ENTTY_NAME_SEQ</param>
(3)increment 插入數據的時候hibernate會給主鍵添加一個自增的主鍵,但是一個hibernate實例就維護一個計數器,
所以在多個實例運行的時候不能使用這個方法。
11、實體對象的三種狀態
Session的生命周期綁定在一個物理的事務(tansaction)上面。
Session的主要功能是提供對映射的實體類實例的創建,讀取和刪除操作
(1)自由狀態(transient): 不曾進行持久化,未與任何Session相關聯
(2)持久化狀態(persistent): 僅與一個Session相關聯
持久化實例可以通過調用 delete()變成游離狀態。通過get()或load()方法得到的實例都是持久化狀態的
(3)游離狀態(detached): 已經進行過持久化,但當前未與任何Session相關聯
游離狀態的實例可以通過調用update(),lock(),replicate(),save(),persist()或者saveOrUpdate()方法進行持久化
hibernate 常用方法介紹
2019-10-15 10:23java之家 Java教程
這篇文章介紹了hibernate的常用方法,有需要的朋友可以參考一下
延伸 · 閱讀
- 2022-03-08持久層ORM框架Hibernate框架的使用及搭建方式
- 2022-02-21如何解決hibernate一對多注解懶加載失效問題
- 2022-02-13基于spring+springmvc+hibernate 整合深入剖析
- 2021-12-20Hibernate的一對一,一對多/多對一關聯保存的實現
- 2021-12-06Java Hibernate使用SessionFactory創建Session案例詳解
- 2021-12-01Hibernate中5個核心接口知識點整理
- Java教程
java 中鎖的性能提高辦法
這篇文章主要介紹了java 中鎖的性能提高辦法的相關資料,需要的朋友可以參考下...
- Java教程
Java list.remove( )方法注意事項
這篇文章主要介紹了Java list.remove( )方法注意事項,非常簡單易懂,需要的朋友可以參考下...
- Java教程
Java之Springcloud Feign組件詳解
這篇文章主要介紹了Java之Springcloud Feign組件詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...
- Java教程
淺談Java(SpringBoot)基于zookeeper的分布式鎖實現
這篇文章主要介紹了Java(SpringBoot)基于zookeeper的分布式鎖實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...
- Java教程
SpringBoot引入Thymeleaf的實現方法
這篇文章主要介紹了SpringBoot引入Thymeleaf的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下...
- Java教程
JAVA中通過自定義注解進行數據驗證的方法
java 自定義注解驗證可自己添加所需要的注解,下面這篇文章主要給大家介紹了關于JAVA中通過自定義注解進行數據驗證的相關資料,文中通過示例代碼介紹...
- Java教程
springboot ehcache 配置使用方法代碼詳解
EhCache是一個比較成熟的Java緩存框架,Springboot對ehcache的使用非常支持,所以在Springboot中只需做些配置就可使用,且使用方式也簡易,今天給大家分享spri...
- Java教程
JavaWeb 實現驗證碼功能(demo)
在 WEB-APP 中一般應用于:登錄、注冊、買某票、秒殺等場景,大家都接觸過這個驗證碼操作,今天小編通過實例代碼給大家講解javaweb實現驗證碼功能,需要...