2012-11-30 75 views
3

我在獨立的JBoss AS7中創建了一個REST API,使用hibernate作爲JPA provider和Infinispan作爲二級緩存。如何在JBoss AS7中使用hibernate-infinispan的write behind方法

我在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

從我所看到的,沒有屬性可以傳遞給JPA配置或Hibernate配置,它可以讓你啓用這個功能(冬眠屬性列表可以在here找到)。

你需要使自己的Infinispan的XML配置文件(可能複製this),創建一個新的namedCache你想要取自屬性inifnispan configuration你給,然後在您的JPA或Hibernate配置添加「 hibernate.cache.infinispan.cfg「屬性與新配置xml的位置。

您還需要通過添加以下屬性到你的Hibernate或者JPA配置更改用於您的統計信息實體緩存:

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