<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0

    ?????? 在前面介紹了Hibernate的緩存技術以及基本的用法,在這里就具體的Hibernate所提供的查詢方法與Hibernate緩存之間的關系做一個簡單的總結。

    ?????? 在開發中,通常是通過兩種方式來執行對數據庫的查詢操作的。一種方式是通過ID來獲得單獨的Java對象,另一種方式是通過HQL語句來執行對數據庫的查詢操作。下面就分別結合這兩種查詢方式來說明一下緩存的作用。

    ?????? 通過ID來獲得Java對象可以直接使用Session對象的load()或者get()方法,這兩種方式的區別就在于對緩存的使用上。

    ●?? load()方法

    ?????? 在使用了二級緩存的情況下,使用load()方法會在二級緩存中查找指定的對象是否存在。

    在執行load()方法時,Hibernate首先從當前Session的一級緩存中獲取ID對應的值,在獲取不到的情況下,將根據該對象是否配置了二級緩存來做相應的處理。

    ?????? 如配置了二級緩存,則從二級緩存中獲取ID對應的值,如仍然獲取不到則還需要根據是否配置了延遲加載來決定如何執行,如未配置延遲加載則從數據庫中直接獲取。在從數據庫獲取到數據的情況下,Hibernate會相應地填充一級緩存和二級緩存,如配置了延遲加載則直接返回一個代理類,只有在觸發代理類的調用時才進行數據庫的查詢操作。

    ?????? 在Session一直打開的情況下,并在該對象具有單向關聯維護的時候,需要使用類似Session.clear(),Session.evict()的方法來強制刷新一級緩存。

    ●?? get()方法

    ?????? get()方法與load()方法的區別就在于不會查找二級緩存。在當前Session的一級緩存中獲取不到指定的對象時,會直接執行查詢語句從數據庫中獲得所需要的數據。

    ?????? 在Hibernate中,可以通過HQL來執行對數據庫的查詢操作。具體的查詢是由Query對象的list()和iterator()方法來執行的。這兩個方法在執行查詢時的處理方法存在著一定的差別,在開發中應該依據具體的情況來選擇合適的方法。

    ●?? list()方法

    ?????? 在執行Query的list()方法時,Hibernate的做法是首先檢查是否配置了查詢緩存,如配置了則從查詢緩存中尋找是否已經對該查詢進行了緩存,如獲取不到則從數據庫中進行獲取。從數據庫中獲取到后,Hibernate將會相應地填充一級、二級和查詢緩存。如獲取到的為直接的結果集,則直接返回,如獲取到的為一些ID的值,則再根據ID獲取相應的值(Session.load()),最后形成結果集返回。可以看到,在這樣的情況下,list()方法也是有可能造成N次查詢的。

    ?????? 查詢緩存在數據發生任何變化的情況下都會被自動清空。

    ●?? iterator()方法

    ?????? Query的iterator()方法處理查詢的方式與list()方法是不同的,它首先會使用查詢語句得到ID值的列表,然后再使用Session的load()方法得到所需要的對象的值。

    ?????? 在獲取數據的時候,應該依據這4種獲取數據方式的特點來選擇合適的方法。在開發中可以通過設置show_sql選項來輸出Hibernate所執行的SQL語句,以此來了解Hibernate是如何操作數據庫的。

    posted on 2009-07-19 21:29 jadmin 閱讀(53) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 日本一线a视频免费观看| 久久精品亚洲福利| 人人公开免费超级碰碰碰视频| 久久精品国产亚洲一区二区| 国产人成免费视频网站| 日本亚洲中午字幕乱码| 亚洲成A人片777777| 国产一精品一AV一免费孕妇| 一级做a爰片久久毛片免费陪 | 免费少妇a级毛片人成网| 成人性做爰aaa片免费看| 亚洲精品亚洲人成在线播放| 久久精品国产精品亚洲艾草网美妙| 在线观看的免费网站无遮挡| 亚洲aⅴ无码专区在线观看| 亚洲成AV人在线观看天堂无码| 免费被黄网站在观看| 免费国产黄网站在线观看可以下载| 亚洲人成色777777老人头| 亚洲AV无码国产精品麻豆天美| 日本高清免费不卡在线| 久久久久久夜精品精品免费啦| 免费人妻精品一区二区三区| 亚洲国产精品乱码在线观看97| 国产亚洲精品免费视频播放| 在线观看免费污视频| 免费国产黄网站在线观看可以下载 | 久久国产美女免费观看精品| 亚洲日韩精品A∨片无码加勒比| 亚洲AV无码精品无码麻豆| 免费一看一级毛片人| 一个人免费观看在线视频www| 美女视频黄的免费视频网页| 黄页网站在线免费观看| 精品丝袜国产自在线拍亚洲| 久久99国产亚洲精品观看| 亚洲A∨午夜成人片精品网站| 成年人在线免费观看| 91av在线免费视频| 你好老叔电影观看免费| 四虎精品免费永久免费视频|