2013-11-28 94 views
0

我是Hibernate的新手,正在閱讀關於Hibernate一級緩存的內容。 我有疑問。 Will every session that is associated with the SessionFactory have an individual cache or for all the sessions there will be only one cache? 任何人都可以請解釋這一點。Hibernate中的一級緩存

回答

2

第一級緩存與會話對象關聯。正如我們所知,會話對象是根據會話工廠的需求創建的,一旦會話關閉,它就會丟失。同樣,與會話對象關聯的第一級高速緩存僅在會話對象處於活動狀態時纔可用。它僅供會話對象使用,並且不可用於應用程序的任何其他部分中的任何其他會話對象。

重要事項

  1. 一級緩存與應用「會話」對象和其他會話對象關聯還看不出來。

  2. 緩存對象的範圍是會話的範圍。一旦會話關閉, 緩存的對象將永遠消失。

  3. 一級緩存默認情況下處於啓用狀態,您無法禁用它。

  4. 當我們第一次查詢實體時,它從數據庫中檢索並存儲在與休眠會話相關的第一級高速緩存中。

  5. 如果我們用相同的會話對象再次查詢同一對象,它將從緩存中加載並且不會執行sql查詢。

  6. 使用evict()方法可以從會話中刪除加載的實體。如果使用evict()方法刪除了該實體,則該實體的下一次加載將再次進行數據庫調用。

  7. 可以使用clear()方法刪除整個會話緩存。它將刪除存儲在緩存中的所有實體。

引自:不關閉第一使sesion http://howtodoinjava.com/2013/07/01/understanding-hibernate-first-level-cache-with-example/

+0

我們能第二屆一個SessionFactory關聯?第一次會議和第二次會議有不同的緩存嗎? – Newbie

+0

是的,我們可以在不關閉現有會話的情況下打開新的會話,並且兩個會話都會有不同的緩存。 –