Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JBoss AS7中使用hibernate infinispan的write-behind方法_Java_Hibernate_Java Ee 6_Jboss7.x_Infinispan - Fatal编程技术网

Java 如何在JBoss AS7中使用hibernate infinispan的write-behind方法

Java 如何在JBoss AS7中使用hibernate infinispan的write-behind方法,java,hibernate,java-ee-6,jboss7.x,infinispan,Java,Hibernate,Java Ee 6,Jboss7.x,Infinispan,我已经在一个独立的JBossAS7中创建了一个RESTAPI,使用hibernate作为JPA提供者,使用Infinispan作为二级缓存 我已经看到Infinispan可以使用write-behind方法,将数据从缓存异步持久化到数据库,这是我的项目所需要的 我想启用此功能,但我找不到任何地方如何实现 如果有帮助,我可以解释为什么我需要这种行为。我有一个名为Stat的实体类。 在该类中,我有一个int balance值,类似于: @Entity public class Stat{ p

我已经在一个独立的JBossAS7中创建了一个RESTAPI,使用hibernate作为JPA提供者,使用Infinispan作为二级缓存

我已经看到Infinispan可以使用write-behind方法,将数据从缓存异步持久化到数据库,这是我的项目所需要的

我想启用此功能,但我找不到任何地方如何实现

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

@Entity
public class Stat{
    private int balance;
}
其中一个REST方法并发访问该余额,从中减去一个,并在数据库中更新它。 这在项目中造成了瓶颈,因为许多线程试图获取锁来读取和更新数据库的平衡

因此,我认为我可能可以使用Infinispan来更新内存中的平衡,并让Infinispan异步地将更改持久化到数据库中


非常感谢您提供的任何帮助。

据我所知,您无法将任何属性传递给JPA配置或Hibernate配置,以启用此功能(可以找到Hibernate的属性列表)

您需要创建自己的infinispan xml配置文件(可能是复制文件),创建一个新的namedCache,其中的属性来自您提供的,然后在JPA或hibernate配置中添加“hibernate.cache.infinispan.cfg”属性和新配置xml的位置

您还需要通过向hibernate或JPA配置中添加以下属性来更改用于Stat实体的缓存:

<property name="hibernate.cache.infinispan.com.package.Stat.cfg"  value="yourNewNamedCache"/>