2015-06-27 78 views
0

會話工廠緩存需要在休眠中顯式配置以微調查詢性能。默認情況下二級緩存處於休眠狀態

是否有一個相關的原因可以達成一致,爲什麼第一級緩存(特定於會話)在Hibernate中開箱即用,而第二級緩存(會話工廠特定)不是?

+0

根據JPA規範...對於JPA提供程序,L2緩存的實現是可選的。然而,Hibernate和Eclipse Link實現它,但是您需要手動配置...在這裏您可以找到有關緩存http://docs.oracle.com/javaee/6/tutorial/doc/gkjio.html – Ankit

回答

0

這是因爲按照JPA規範...二級緩存的實現是可選的JPA供應商.. Hibernate和Eclipse的鏈接但是實現它,但你需要手動配置...

在這裏你可以找到有關緩存docs.oracle.com/javaee/6/tutorial/doc/gkjio.html一切

注:在應用程序中 使用第二級緩存的一個後果是,底層的數據可能有在數據庫表中更改爲 ,而高速緩存中的值尚未更改,稱爲陳舊的情況 閱讀。

1

一級緩存是總是啓用,這就是Hibernate的工作原理。您可能偶爾會使用StatelessSession來禁用第一級緩存,但是您幾乎會釋放所有Hibernate功能。

默認情況下禁用二級緩存,因爲可緩存的實體的配置和選擇是特定於應用程序的。例如,如果某些實體不適合二級緩存(好的候選對象通常是很少更新並且頻繁讀取的實體),那麼爲它們啓用二級緩存會顯着降低性能。