3

我在独立的 JBoss AS7 中创建了一个 REST API,使用 hibernate 作为 JPA 提供程序,使用 Infinispan 作为二级缓存。

我在https://docs.jboss.org/author/display/ISPN/Write-Through+And+Write-Behind+Caching中看到 Infinispan 可以使用 write-behind 方法,将数据从缓存异步保存到db,这是我的项目需要的东西。

我想启用此功能,但我无法在任何地方找到如何做到这一点。

如果有帮助,我可以解释为什么我需要这种行为。我有一个名为 Stat 的实体类。在那个类中,我有一个 int balance 值,例如:

@Entity
public class Stat{
    private int balance;
}

REST 方法之一同时访问该余额,从中减去一个并在数据库中更新它。这在项目中造成了瓶颈,因为许多线程试图获取锁来读取和更新数据库的余额。

所以,我认为我可以使用 Infinispan 来更新内存中的余额,并让 Infinispan 异步持久化对数据库的更改。

任何帮助将不胜感激。

4

1 回答 1

0

From what I'm seeing, there is not property you can pass to either the JPA configuration or Hibernate configuration that would let you enable this functionality (the list of properties for hibernate can be found here).

You'll need to make your own infinispan xml configuration file (possibly copying this), create a new namedCache with the properties you want taken from the inifnispan configuration you gave, and then in your JPA or hibernate configuration add the "hibernate.cache.infinispan.cfg" property with the location of your new configuration xml.

You will also need to change the cache used for your Stat entity by adding the following property to your hibernate or JPA config:

<property name="hibernate.cache.infinispan.com.package.Stat.cfg"  value="yourNewNamedCache"/>
于 2012-12-30T08:06:56.720 回答