成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hibernate查詢方法與緩存的關系

開發 后端
本文結合這兩種Hibernate查詢方法來說明一下緩存的作用。在項目開發中,通常是通過兩種方式來執行對數據庫的查詢操作的。

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

通過ID來獲得Java對象可以直接使用Session對象的load()或者get()方法,這兩種方式的區別就在于對緩存的使用上。 下面我們來具體看看Hibernate查詢方法的實現。

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查詢方法是如何操作數據庫的。

 

【編輯推薦】

  1. Hibernate緩存機制探討
  2. 解析Hibernate的批量刪除功能
  3. Hibernate一對多關系的處理a>
  4. Struts與Hibernate的完美結合方案
  5. 層層解析Hibernate中的事務的濫用
責任編輯:佚名 來源: JavaEye
相關推薦

2009-06-08 10:20:01

Hibernate查詢

2009-06-29 09:03:31

Hibernate多條

2009-09-25 15:34:42

Hibernate關聯

2009-09-22 11:24:07

Hibernate查詢

2010-11-15 16:26:46

Oracle系統時間

2010-10-29 11:22:23

Oracle用戶會話

2010-06-10 17:59:05

2019-11-15 10:01:07

MySQL數據庫數據

2009-05-21 09:24:42

表空間查詢Oracle

2010-11-25 16:40:11

MySQL大表重復字段

2013-05-27 10:11:25

路由器查詢方式路由器遞歸查詢路由器撲朔圖

2012-07-30 09:50:28

MongoDB

2009-07-21 14:15:00

iBATIS.NET多

2024-03-04 11:13:29

Django數據庫Python

2022-06-21 08:13:34

MySQL查詢數據庫

2009-06-17 15:13:30

2009-07-02 09:40:14

Hibernate的繼

2012-02-03 11:31:33

HibernateJava

2009-01-27 21:00:00

服務器數據庫SQL Server

2010-07-12 17:12:37

JPA 2.0緩存Hibernate緩存Java EE
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成年人免费网站 | 精品国产乱码久久久久久图片 | 成人在线精品视频 | 久久精品亚洲欧美日韩久久 | 免费人成激情视频在线观看冫 | 精品国产伦一区二区三区观看说明 | 亚洲成人毛片 | 艹逼网 | 国产精品综合一区二区 | 久久伊人青青草 | 亚洲国产精品视频 | 久久精品二区亚洲w码 | 99精品视频免费在线观看 | 污污免费网站 | 亚洲欧美日韩精品久久亚洲区 | 久久久精品一区二区三区 | 中文字幕亚洲一区二区三区 | 特黄特色大片免费视频观看 | 成人免费看黄网站在线观看 | 亚洲三区在线观看 | 蜜桃视频一区二区三区 | 亚洲视频第一页 | 国产日产久久高清欧美一区 | 黄在线免费观看 | 欧美国产精品一区二区三区 | 狠狠干av | 成人中文字幕av | 久久久久国产精品人 | 欧美日韩在线一区二区三区 | 一区福利视频 | 91精品国产综合久久久动漫日韩 | 日日爽| 亚洲一区二区视频在线播放 | 日韩精品免费视频 | 亚洲一二三区不卡 | 99tv| 日本高清不卡视频 | 午夜视频在线免费观看 | 97精品一区二区 | 青青草av网站 | 在线观看亚洲专区 |