Java JPA的写后缓存
从这里和整个网络的搜索中可以看出,不可能将EHCache实现为Hibernate的写后缓存,因为这需要对Hibernate代码进行重大更改 JPA提供商是否有其他解决方案(最好是开源的)可以“透明地”挂接到写后缓存实现中,最好是可以用Terracotta之类的东西分发Java JPA的写后缓存,java,hibernate,jpa,ehcache,terracotta,Java,Hibernate,Jpa,Ehcache,Terracotta,从这里和整个网络的搜索中可以看出,不可能将EHCache实现为Hibernate的写后缓存,因为这需要对Hibernate代码进行重大更改 JPA提供商是否有其他解决方案(最好是开源的)可以“透明地”挂接到写后缓存实现中,最好是可以用Terracotta之类的东西分发 我读过EclipseLink和Oracle Coherence可以实现这一点,但可悲的是,Coherence并不是一个便宜的解决方案 我们确实基于Hibernate编写了一个写在缓存后面的一致性处理程序 是什么阻止您使用任何JPA
我读过EclipseLink和Oracle Coherence可以实现这一点,但可悲的是,Coherence并不是一个便宜的解决方案 我们确实基于Hibernate编写了一个写在缓存后面的一致性处理程序 是什么阻止您使用任何JPA实现编写EHCache CacheWriter,如中所述。您可以扩展AbstractCacheWriter,只需实现write(net.sf.ehcache.Element)、writeAll(java.util.Collection)、delete(net.sf.ehcache.CacheEntry)和deleteAll(java.util.Collection) 只需确保它完全独立于周围的事务。 然后,应用程序单独写入缓存,不再使用JPA
您遇到了哪些问题?EHCache和Hibernate的问题可能是指从客户端代码中使用Hibernate,然后透明地首先将Hibernate传输到EHCache,并且实际的持久化以写后方式异步执行。我看不出客户端代码直接写入缓存和独立使用hibernate进行写后处理有任何问题。感谢分享您的经验,这听起来比我预期的要容易得多!我没有尝试过编写写后缓存,正如在我最初的问题中,我们正在寻找“透明”解决方案,这些解决方案需要最少的编码,但可以通过配置和使用库来实现。我做了一些非常类似的事情:应用程序的一部分使用EHCache,由JPA支持(在EJB3 SLSB后面)。非常简单,只要您对完全断开连接的对象图满意。@Joshuavis您需要在断开域对象和非规范化之间找到平衡。我在JAX London上看到了本·斯托福德(Ben Stopford)在苏格兰皇家银行做的一个有趣的介绍:@greyfairer True,在尝试将这种缓存与“典型”JPA用法混合使用时,你必须非常小心。