使用jbosscache mvcc作为hibernate的二级缓存提供者

如果使用jboss5,可以很容易的将jbosscache作为hibernate的二级缓存提供者。首先需要这样编写persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="tempdb" transaction-type="JTA">
<jta-data-source>java:/DefaultDS</jta-data-source>
<properties>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.jbc2.JndiMultiplexedJBossCacheRegionFactory"/>
<!-- region factory specific properties -->
<property name="hibernate.cache.region.jbc2.cachefactory" value="java:CacheManager"/>
<property name="hibernate.cache.region.jbc2.cfg.entity" value="mvcc-entity"/>
<property name="hibernate.cache.region.jbc2.cfg.collection" value="mvcc-entity"/>
</properties>
</persistence-unit>
</persistence>

注意,当前的jbosscache还不支持CacheConcurrencyStrategy.NONSTRICT_READ_WRITE和CacheConcurrencyStrategy.READ_WRITE,需要将他们在代码中改为CacheConcurrencyStrategy.TRANSACTIONAL,否则hibernate entitymanager將无法启动,报如下错误

javax.persistence.PersistenceException: [PersistenceUnit: persistence] Unable to build EntityManagerFactory

...

Caused by: org.hibernate.cache.CacheException: unsupported access type [nonstrict-read-write]


当然有人会质疑为什么在带来编码限制的情况下,还引入jbosscache。理由很简单——因为它是一个分布式复制的cache,可以做到多应用服务器节点同步cache对象。当然,如果仅仅是使用单机的hibernate JPA,单节点的ehcache就够了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值