Hibernate快取的分類

2021-08-31 19:58:33 字數 1131 閱讀 2914

hibernate快取分類:

session

快取,一級快取

. sessionfactory的快取分為內建快取和外接快取.內建快取中存放的是sessionfactory物件的一些集合屬性包含的資料(對映元素據及預定義sql語句等),對於應用程式來說,它是唯讀的.外接快取中存放的是資料庫資料的副本,其作用和一級快取類似.二級快取除了以記憶體作為儲存介質外,還可以選用硬碟等外部儲存裝置

. hibernate

的快取範圍

hibernate的一級快取和二級快取都位於均位於持久層,且均用於存放資料庫資料的副本,最大的區別就是快取的範圍各不一樣

. 快取的範圍分為3類

: 1.事務範圍

事務範圍的快取只能被當前事務訪問,每個事務都有各自的快取,快取內的資料通常採用相互關聯的物件形式.快取的生命週期依賴於事務的生命週期,只有當事務結束時,快取的生命週期才會結束.事務範圍的快取使用記憶體作為儲存介質,一級快取就屬於事務範圍

. 2.

應用範圍

應用程式的快取可以被應用範圍內的所有事務共享訪問.快取的生命週期依賴於應用的生命週期,只有當應用結束時,快取的生命週期才會結束.應用範圍的快取可以使用記憶體或硬碟作為儲存介質,二級快取就屬於應用範圍

. 3.集群範圍

在集群環境中,快取被乙個機器或多個機器的程序共享,快取中的資料被複製到集群環境中的每個程序節點,程序間通過遠端通訊來保證快取中的資料的一致,快取中的資料通常採用物件的鬆散資料形式

. hibernate

的快取管理

一級快取的管理:

evit(object obj)

將指定的持久化物件從一級快取中清除,釋放物件所占用的記憶體資源,指定物件從持久化狀態變為脫管狀態,從而成為游離物件

. clear()

將一級快取中的所有持久化物件清除

,釋放其占用的記憶體資源

contains(object obj)

判斷指定的物件是否存在於一級快取中

. flush()

重新整理一級快取區的內容,使之與資料庫資料保持同步

. 二級快取的管理:

evict(class arg0, serializable arg1)

將某個類的指定id的持久化物件從二級快取中清除,釋放物件所占用的資源.

hibernate快取,mybatis快取詳解

hibernate的快取有一級快取,二級快取,查詢快取。一級快取 很簡單,session級別的快取,通過get,update可以將物件放到一級快取中。二級快取 sessionfactory級別的快取,通過get,list可以將物件放到二級快取中,這裡我必須細講一下,list雖然能夠把物件放入二級快取...

hibernate的快取機制

快取是介於 應用程式和物理資料來源之間,其作用是為了降低應用程式對物理資料來源訪問的頻次,從而提高了應用的執行效能。快取內的資料是對物理資料來源中的資料的複製,應用程式在執行時從快取讀寫資料,在特定的時刻或事件會同步快取和物理資料來源的資料。快取的介質一般是記憶體,所以讀寫速度很快。但如果快取中存放...

Hibernate的快取機制

hibernate 所有快取機制詳解 hibernate 提供的一級快取 hibernate是乙個執行緒對應乙個session,乙個執行緒可以看成乙個使用者。也就是說session級快取 一級快取 只能給乙個執行緒用,別的執行緒用不了,一級快取就是和執行緒繫結了。hibernate一級快取生命週期很...