Hibernate 六 快取策略

2021-10-02 06:05:34 字數 1574 閱讀 9102

快取:

快取就是資料庫資料在記憶體中的臨時容器,包括資料庫資料在記憶體中的臨時拷貝,它位於資料庫與資料庫訪問中間層,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雖然能夠把物件放入二級快取...