会话工厂Cache需要在hibernate中显式配置,以微调查询性能。
是否存在可以达成一致的相关原因,为什么在休眠时启用了第一级缓存(特定于会话)而第二级缓存(特定于会话工厂)不是?
答案 0 :(得分:1)
第一级缓存始终启用,这就是Hibernate的工作原理。您可能偶尔会使用StatelessSession来禁用第一级缓存,但是您几乎可以使用它来释放所有Hibernate功能。
默认情况下禁用二级缓存,因为可缓存哪些实体的配置和选择是特定于应用程序的。例如,如果某些实体不是L2缓存的良好候选者(好的候选者通常是很少更新且经常阅读的实体),那么为它们启用第二级缓存会显着降低性能。
答案 1 :(得分:0)
根据JPA规范...对于JPA提供程序,L2缓存的实现是可选的。但是Hibernate和Eclipse Link实现它,但您需要手动配置...
在这里,您可以找到有关缓存docs.oracle.com/javaee/6/tutorial/doc/gkjio.html
的所有信息。注意:在应用程序中使用二级缓存的一个后果 是数据库表中的基础数据可能已更改, 虽然缓存中的值没有,但这种情况称为陈旧 读取。