2017-07-26 59 views
0

我在我的應用程序中使用hibernate。我爲每個事務使用單獨的會話對象。那麼會話緩存如何有用?我必須使用其他級別的緩存嗎?如果每個事務使用單獨的會話,Hibernate一級緩存的用途是什麼?

+0

正確的一級緩存是一個會話級緩存,它默認啓用,你不能禁用它。它與你的會話相關聯,當你談論第一級緩存時,你實際上談論的是會話,它是一樣的。 –

+0

二級緩存是應用程序中所有會話共享的緩存,例如,如果您在所有應用程序(例如,列表,列表等)中都有通用的引用數據,那麼它對於只讀數據非常有效。此緩存默認情況下處於禁用狀態,您可以啓用或不啓用。 –

回答

0

您在會話中調用的所有persist,update,delete操作都將存儲在該緩存中。 在刷新持久化上下文之後,數據庫將被命中,因此該高速緩存的內容傳輸到數據庫的時刻即將到來。因此,即使它僅限於單個會話,它仍然可以提高您的性能。

當你試圖找到一個實體並且它已經在緩存中時,數據庫不會被該查找命中 - 這是另一種可能的性能增益。

有所謂的二級緩存,不僅限於單個持久性上下文,您可以閱讀它們,但這是一個更復雜的主題。 ;)

相關問題