我在独立的JBoss AS7中创建了一个REST API,使用hibernate作为JPA提供程序,使用Infinispan作为二级缓存。
我在https://docs.jboss.org/author/display/ISPN/Write-Through+And+Write-Behind+Caching中看到,Infinispan可以使用write-behind方法,将数据从缓存异步地保存到数据库,这是我项目所需要的。
我想启用此功能,但我无法在任何地方找到如何操作。
如果有帮助,我可以解释为什么我需要这种行为。我有一个名为Stat的实体类。 在那个班级中,我有一个int余额值,如:
@Entity
public class Stat{
private int balance;
}
其中一个REST方法同时访问该平衡,从中减去一个并在数据库中更新它。 这在项目中造成了瓶颈,因为许多线程试图获取锁以读取和更新数据库的余额。
所以,我认为我可以使用Infinispan来更新内存中的余额,并让Infinispan异步地保持对数据库的更改。
非常感谢任何帮助。
答案 0 :(得分:0)
从我所看到的,没有可以传递给JPA配置或Hibernate配置的属性,可以让你启用这个功能(可以找到hibernate的属性列表here)。
您需要制作自己的infinispan xml配置文件(可能复制this),创建一个新的namedCache,其中包含您要从inifnispan configuration获取的属性,然后在您的JPA中或者hibernate配置将“hibernate.cache.infinispan.cfg”属性添加到新配置xml的位置。
您还需要通过将以下属性添加到hibernate或JPA配置来更改用于Stat实体的缓存:
<property name="hibernate.cache.infinispan.com.package.Stat.cfg" value="yourNewNamedCache"/>