从JBoss迁移到TomEE时,hibernate中的二级缓存

时间:2018-03-29 15:22:28

标签: java hibernate jta tomee second-level-cache

我需要将我在GWT中构建的应用程序从Jboss迁移到tomEE。该应用程序使用Jboss缓存在hibernate中启用了二级缓存。是否有可能在tomEE中使用Jboss缓存或者我是否必须找到替代方案?如果可能,有人可以帮我配置hibernate.cfg.xml吗?以下是配置

<hibernate-configuration>
<session-factory>
    <property name="hibernate.connection.driver_class">com.sybase.jdbc3.jdc.Sybdriver</property>
    <property name="hibernate.connection.url">xyz...</property>
    <property name="hibernate.connection.username">xyz..</property>
    <property name="hibernate.connection.password">xyz..</property>
    <property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
    <property name="transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
    <property name="dialect">org.hibernate.dialect.SybaseASE15Dialect</property>
    <property name="generate_statistics">false</property>       
    <property name="jdbc.use_scrollable_resultset">false</property>
    <property name="cache.provider_class">org.hibernate.cache.jbc.JBossCacheRegionFactory</property>
    <property name="cache.use_second_level_cache">true</property>
    <property name="cache.use_minimal_puts">true</property>
    <property name="cache.use_structured_entries">true</property>
    <property name="cache.use_query_cache">true</property>
    <property name="cache.region.factory_class">org.hibernate.cache.jbc2.JndiMultiplexedJBossCacheRegionFactory</property>
    <property name="cache.region.jbc2.cachefactory">java:CacheManager</property>
    <property name="cache.region.jbc2.cfg.entity">mvcc-entity</property>
    <property name="cache.region.jbc2.cfg.collection">mvcc-entity</property>
    <property name="cache.region.jbc2.cfg.query">local-query</property>

    <mapping resource="book.hbm.xml" />
</session-factory>
 </hibernate-configuration>

2 个答案:

答案 0 :(得分:0)

我们无法在TomEE中使用JBoss缓存实现二级缓存。我们已经使用Ehcache实现了类似的缓存机制,该机制虽然有点慢,但效果很好。

答案 1 :(得分:0)

<property name="cache.region.jbc2.cfg.entity">mvcc-entity</property>
<property name="cache.region.jbc2.cfg.collection">mvcc-entity</property>
<property name="cache.region.jbc2.cfg.query">local-query</property>

我们看到,通过使用特定于JBoss服务器的JBoss缓存实现,启用了实体,集合和查询缓存。对于TomEE,我们不能使用相同的配置。您将必须使用可用的不同缓存技术来实现不同的缓存技术,并将其与二级缓存的使用方式相匹配(例如说只读,读写,事务性等)。在类似的设置中,我使用了“ Ehcache”,就解决了问题。