如何配置 JPA 2.0 和 Hibernate 3.5.2 以使用 EHCache 作为二级缓存和查询缓存?
我找到了一些如何配置纯休眠以使用 EHCache 的说明。但我找不到任何有关如何配置 JPA2.0 EntityManager 以使用缓存的说明。 Hibernate 3.5.2 是我的 JPA2.0 提供程序。
编辑// @Cacheable(true)
对于实体来说足够了吗?或者我应该使用 @org.hibernate.annotations.Cache
来配置实体?
I found some instructions how to configure pure hibernate to use EHCache. But I can't find any instructions how to configure JPA2.0 EntityManager to use cache. Hibernate 3.5.2 is my JPA2.0 provider.
edit//
Is @Cacheable(true)
enough for entity? Or should I use @org.hibernate.annotations.Cache
to configure the entity?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 JPA 配置 L2 缓存提供程序的方式与原始 Hibernate 类似。
默认情况下,Hibernate 3.5 附带 EhCache 1.5(请参阅将 Ehcache 配置为二级缓存)如果您想使用 Hibernate 提供的官方缓存提供程序(如果您使用 Maven,则在
hibernate-ehcache
中),请声明:如果您想使用 EhCache 2.x,您需要使用 EhCache 提供的提供程序,该提供程序支持新 Hibernate 3.3/3.5 SPI 及其
CacheRegionFactory
)。用途:例如创建实例,或者
强制Hibernate使用Ehcache CacheManager的单例。
然后激活 L2 缓存和查询缓存:
这是 Hibernate L2 缓存设置。
理论上,
@Cacheable
应该是 Hibernate 专有注释的替代品,并且应该与shared-cache-mode
元素结合使用: 这个上一个问题,初步实验尚未成功(可能与HHH-5303,我不能说,我没有调查那么多)。所以我建议坚持使用专有注释。
参考资料
资源
相关问题
The way you configure the L2 cache provider with JPA is similar is similar to raw Hibernate.
By default, Hibernate 3.5 ships with EhCache 1.5 (see Configure Ehcache as a Second Level Cache) and if you want to use the official cache provider provided by Hibernate (in
hibernate-ehcache
if you are using Maven), declare:If you want to use EhCache 2.x, you'll need to use the provider provided by EhCache which supports the new Hibernate 3.3/3.5 SPI with its
CacheRegionFactory
). Use:for instance creation, or
to force Hibernate to use a singleton of Ehcache CacheManager.
And then activate L2 caching and query caching:
That's for the Hibernate L2 cache setup.
In theory, the
@Cacheable
is supposed to be a replacement for the Hibernate proprietary annotation and should be used in conjunction with theshared-cache-mode
element:But as mentioned in this previous question, initial experimentation has not been successful (it might be related to HHH-5303, I can't say, I didn't investigate that much). So I suggest sticking with the proprietary annotations.
References
Resources
Related question
在 persistence.xml 中,您可以指定此属性:
并使其处于活动状态:
in persistence.xml you can specify this property:
and to make it active: