日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【Hibernate框架开发之五】Hibernate对象的三种状态Session常用方法

發布時間:2025/3/21 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Hibernate框架开发之五】Hibernate对象的三种状态Session常用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?1. Hibernate對象的三種狀態:(圖解如下:)

?

如圖所示,Hibernate對象有三種狀態,1.Transient ?2.Persistent 3.Detached;

三種狀態的區別如下:

1. 當對象處于Transient時,只在內存中有一個對象,沒ID,而且在緩存和數據庫中沒有;

2. 當對象處于save之后,內存、緩存都存在,有ID,而且當對象commit后數據庫也存在;

3.當對象處于Detached時,內存、緩存、數據庫都存在,并有ID,只是處于托管狀態;

? 2. Session常用方法:

? ? ? ? 2. 1Session的兩個方法區分

得到Session的方法有如下兩個:

openSession :每次都是新的Session,并且要手動close

getCurrentSession:從上下文找,如已有那么用已經有的Session,如沒有,創建新的;不需要手動close;

ps.?? 上下文具體指的是hibernate.cfg.xml中的current_session_context_class:

? <property name="current_session_context_class">thread</property>

current_session_context_class有四個值,兩個是常用的:

thread:在線程里找是否有已經存在的Session;(最常用)

jta:主要針對數據庫分布式而用;(處理多個數據庫事務)

? ? ? ? 2.2 ?delete :

delete(Object arg0); 當對象處于Detached后我們就可以使用delete進行刪除其對象;

2.3 ?load :

ss2.load(Class arg0, Serializable arg1); ?返回Object,強制轉換下就OK了。

arg0:指的是你從數據庫取出數據當成arg0類型處理;

arg1:指的是主鍵;

? ? ? ?2.4. get :?

ss2.load(Class arg0, Serializable arg1); 與Load方法一樣可以實現取出數據的功能;

? ? ? ? ? ? ??注意: ?load 和 get的區別!

2.4.1. ?load返回的只是代理對象,只有當你真正使用對象內容的時候才會發出sql語句;而get則會直接從數據庫加載,立刻發出sql語句,不會延遲;

2.4.2. 當使用不存在的數據時,load不會報錯,而get則肯定會報錯;

? ? ? ?2.5 update:

update(Object arg0); 此種情況效率很低,因為默認將所有字段都進行更新;

so, 可以從數據庫中獲取到其對象后,直接set改變需要設置的屬性,然后當session進行commit時,hibernate默認同步數據庫,如發現一致,不會發update的sql語句進行更新,當不一致的時候才會發sql的update的語句,當然此時更新也是全部字段進行更新,效率仍然偏低;

如果需要單獨更新一個字段,方法如下:

? ? ? ? ? 2.5.1:修改注解(不靈活)當不需要更新時進行更新的屬性,使用注解@Column(updatable=false)

updatable默認為true;

? ? ? ? ?2.5.2: 使用xml配置文件的話,可以使用dynamic-update

? ? ? ? ?2.5.3: HQL(EJBQL)?(推薦)

? 2.6 :saveOrUpdate:

saveOrUpdate(Object o); ? 自動選擇save還是update;

? 2.7: clear: ? ?

clear(); 主要用于清除session的緩存;

? 2.8: flush():

flush(); 強制讓緩存內容與數據庫內容做同步,默認當session的commit時才同步;

總結

以上是生活随笔為你收集整理的【Hibernate框架开发之五】Hibernate对象的三种状态Session常用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。