gpt4 book ai didi

java - 如何在JBoss AS7中使用hibernate-infinispan的write Behind方法

转载 作者:行者123 更新时间:2023-12-02 09:39:30 25 4
gpt4 key购买 nike

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

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

我想启用此功能,但我找不到如何操作的地方。

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

@Entity
public class Stat{
private int balance;
}

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

因此,我认为我可以使用 Infinispan 来更新内存中的余额,并让 Infinispan 将更改异步保存到数据库中。

任何帮助将不胜感激。

最佳答案

据我所知,没有任何属性可以传递给 JPA 配置或 Hibernate 配置来启用此功能(可以找到 hibernate 的属性列表 here )。

您需要创建自己的 infinispan xml 配置文件(可能复制 this ),使用您想要从 inifnispan configuration 获取的属性创建一个新的namedCache。您给出的,然后在 JPA 或 hibernate 配置中添加“hibernate.cache.infinispan.cfg”属性以及新配置 xml 的位置。

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

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

关于java - 如何在JBoss AS7中使用hibernate-infinispan的write Behind方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13646728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com