默认情况下禁用休眠中的二级缓存

时间:2015-06-27 20:53:40

标签: hibernate object-persistence

会话工厂Cache需要在hibernate中显式配置,以微调查询性能。

是否存在可以达成一致的相关原因,为什么在休眠时启用了第一级缓存(特定于会话)而第二级缓存(特定于会话工厂)不是?

2 个答案:

答案 0 :(得分:1)

第一级缓存始终启用,这就是Hibernate的工作原理。您可能偶尔会使用StatelessSession来禁用第一级缓存,但是您几乎可以使用它来释放所有Hibernate功能。

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

答案 1 :(得分:0)

根据JPA规范...对于JPA提供程序,L2缓存的实现是可选的。但是Hibernate和Eclipse Link实现它,但您需要手动配置...

在这里,您可以找到有关缓存docs.oracle.com/javaee/6/tutorial/doc/gkjio.html

的所有信息。
  

注意:在应用程序中使用二级缓存的一个后果   是数据库表中的基础数据可能已更改,   虽然缓存中的值没有,但这种情况称为陈旧   读取。