2015-06-27 53 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功能。

默认情况下禁用二级缓存,因为可缓存的实体的配置和选择是特定于应用程序的。例如,如果某些实体不适合二级缓存(好的候选对象通常是很少更新并且频繁读取的实体),那么为它们启用二级缓存会显着降低性能。