hibernate一級和二級快取介紹

2022-09-13 21:06:18 字數 1592 閱讀 1474

一級快取

hibernate快取包括兩大類:hibernate一級快取和hibernate二級快取hibernate一級快取又稱為「session的快取」,它是內建的,不能被解除安裝(不能被解除安裝的意思就是這種快取不具有可選性,必須有的功能,不可以取消session緩

在第一級快取中,持久化類的每個例項都具有唯一的oid存

。在快取中的物件,具有永續性,session物件負責管理.一級快取的優點是使用同乙個session物件多次查詢同乙個資料物件,僅對資料庫查詢一次

例如:session.load(user.class,1);

session.load(user.class,1);

。一級快取採用的是key-value的map方式來實現的。在快取實體物件時,物件的主關鍵字id是map的key,實體物件就是物件的值。所以說一級快取是以實體物件為單位進行儲存的。訪問的時候使用的是主鍵關鍵字id。

一級快取使用的是自動維護的功能。但可以通過session提供的手動方法對一級快取的管理進行手動干預。evict()方法用於將某個物件從session的一級快取中清除。clear()方法用於將session快取中的方法全部清除。

hibernate一級快取是session級別的,所以如果session關閉後,快取就沒了,當我們再次開啟session的時候,快取中是沒有了之前查詢的物件的,所以會再次傳送sql語句。

session.get(user.class,1);

session.close();

session.get(user.class,1);

二級快取

hibernate二級快取又稱為「sessionfactory的快取」,由於sessionfactory物件的生命週期和應用程式的整個過程對應,因此hibernate二級快取是程序範圍或者集群範圍的快取,有可能出現併發問題,因此需要採用適當的併發訪問策略,該策略為被快取的資料提供了事務隔離級別。

二級快取分為:

內建:配置檔案載入對映檔案元資料

外接:第二級快取

第二級快取是可選的,是乙個可配置的外掛程式,在預設情況下,sessionfactory不會啟用這個外掛程式。

hibernate的二級快取允許選用以下型別的快取外掛程式:

1,ehcache:可作為程序範圍內的快取,存放資料的物理介質可以是記憶體或硬碟,對hibernate的查詢快取提供了支援。

2,opensymphony oscache:可作為程序範圍內的快取,存放資料的物理介質可以是記憶體或硬碟,提供了豐富的快取資料過期策略,對hibernate的查詢快取提供了支援。

3,swarmcache:可作為群集範圍內的快取,但不支援hibernate的查詢快取。

4,jbosscache:可作為群集範圍內的快取,支援事務型併發訪問策略,對hibernate的查詢快取提供了支援

二級快取預設關閉,需要程式設計師手動開啟。

1.首先匯入ehcache.jar二級快取包。

2.然後,在src下新增ehcache.xml配置,

3.同時,在hibernate.cfg.xml中啟用二級快取

true

net.sf.ehcache.hibernate.ehcacheprovider。

4.:指定使用二級快取快取哪種型別的物件,在hbm.xml中新增

Hibernate 一級 二級緩衝

hibernate緩衝按級別共分為兩種,一級緩衝 session 和二級緩衝 sessionfactory 有的也說是三種,還有一種是查詢緩衝,當然,查詢緩衝是依託於二級緩衝。ok,什麼是緩衝?在記憶體裡開闢一塊空間把本來應該存在硬碟裡面的資料,存在這個空間裡面,將來,需要這塊資料的時候直接在記憶體...

Hibernate一級,二級快取

一級快取 session級別的快取 當session被open時,快取即被open 當session被close時,快取即被close 在快取open到close這段時間,多次載入同乙個持久化物件,只有第一次向資料庫傳送sql語句載入,之後的載入都是基於快取的 而二級快取是sessionfactor...

關閉二級快取 Mybatis一級快取 二級快取詳講

首先,我們先看一下這個標題 查詢快取 那就說明跟增 刪 改是沒有任何關聯的,只有在查詢時,才會遇到快取,增刪改不涉及!查詢快取目前mybatis中提供了兩個,分別是 一級快取 二級快取 所以,sqlsession的快取,是屬於一級快取 那,又有什麼用呢?比如,我們現在資料庫中有兩條資料,分別是張三跟...