快取:
快取就是資料庫資料在記憶體中的臨時容器,包括資料庫資料在記憶體中的臨時拷貝,它位於資料庫與資料庫訪問中間層,orm在查詢資料時,首先會根據自身的快取管理策略,在快取中查詢相關資料,如果發現所需的資料,則直接將此資料作為結果加以使用,從而避免資料庫呼叫效能的開銷,而相對記憶體操作而言,資料庫呼叫是乙個代價高昂的過程。
查詢資料時,先去快取中查詢是否有此資料,如果有此資料,則直接使用快取中的資料,不再從資料庫中查詢,否則去資料庫中查詢,減少與資料庫的互動。
hibernate快取包括兩大類:一級快取和二級快取
hibernate一級快取又被稱為「session的快取」。session快取是內建的,不能被解除安裝,是事務範圍的快取,在一級快取中,持久化類的每個例項都具有唯一的oid。
hibernate二級快取又稱為「sessionfactory的快取」,由於sessionfactory物件的生命週期和應用程式的整個過程對應,因此hibernate二級快取是程序範圍或者集群範圍的快取,有可能出現併發問題,因此需要採用適當的併發訪問策略,該策略為被快取的資料提供了事務隔離級別,第二級快取是可選的,是乙個可配置的外掛程式,預設下sessionfactory不會啟用這個外掛程式。
一級快取(session):
第一次通過id=1獲取物件的時候,session中是沒有對應快取物件的,所以會在"log1"後出現sql查詢語句。
第二次通過id=1獲取物件的時候,session中有對應的快取物件,所以在"log2"後不會出現sql查詢語句
二級快取(sessionfactory):
hibernate本身不提供二級快取,都是使用第三方的二級快取外掛程式,這裡使用的是 ehcache提供的二級快取,在hibernate.cfg.xml中開啟二級快取的配置
使用不同的session,都去獲取id=1的category,只會訪問一次資料庫。
因為第二次獲取雖然沒有從第二個session中拿到快取,但是從sessionfactory中拿到了category快取物件
ehcache.xml配置檔案
Hibernate和Jive快取策略的比較
hibernate和jive快取策略的比較 一 基本概念 po是持久化物件,他只是對物理資料實體的一種物件表示。vo是值物件,準確地講,他是業務物件。formbean只是html表單的封裝,起到在控制層弱化的request中儲存資料的作用,將request的get方法轉 變為物件的訪問值。二 快取策...
Hibernate和Jive快取策略的比較
一 基本概念 po是持久化物件,它只是對物理資料實體的一種物件表示。vo是值物件,準確地講,它是業務物件。formbean只是html表單的封裝,起到在控制層弱化的request中儲存資料的作用,將request的get方法轉 變為物件的訪問值。二 快取策略比較 jive 1 jive的快取策略的過...
hibernate快取,mybatis快取詳解
hibernate的快取有一級快取,二級快取,查詢快取。一級快取 很簡單,session級別的快取,通過get,update可以將物件放到一級快取中。二級快取 sessionfactory級別的快取,通過get,list可以將物件放到二級快取中,這裡我必須細講一下,list雖然能夠把物件放入二級快取...