1. 程式人生 > >關於Hibernate的Session快取的理解

關於Hibernate的Session快取的理解

1、java物件在Hibernate中的四個狀態

1)臨時狀態:剛被new語句建立,還沒有被持久化,且不處於Session的快取中,處於臨時狀態的java物件。

2)持久化狀態:已經被持久化,並且加入到Session的快取中。處於持久化狀態的java物件

3)遊離狀態:已經被持久化,但不再處於Session的快取中。

4)刪除狀態:已經被持久化,但是不再處於Session的快取中,如:session.delete(); session.close();

一級快取:Session的快取是內建的,不能被解除安裝,也被稱為Hibernate的第一級快取。

二級快取:其中SessionFactory的快取又可以分為兩類:內建快取和外接快取。SessionFactory的內建快取和Session的快取在實現方式上比較相似,前者是SessionFactory物件的一些集合屬性包含的資料,後者是指Session的一些集合屬性包含的資料。SessionFactory的外接快取是一個可配置的外掛。在預設情況下,SessionFactory不會啟用這個外掛。外接快取的資料是資料庫資料的拷貝,外接快取的介質可以是記憶體或者硬碟。SessionFactory的外接快取也被稱為Hibernate的第二級快取。

一級快取與二級快取的區別:

當Hibernate根據ID訪問資料物件的時候,首先從Session一級快取中查;查不到,如果配置了二級快取,那麼從二級快取中查;查不到,再查詢資料庫,把結果按照ID放入到快取。