我們的項目採用選項3.我們應用註釋org.hibernate.annotations.Cache
到我們緩存在Ehcache,使用ehcache.xml
配置的Ehcache,並啓用和配置Hibernate second-level cache在hibernate.cfg.xml
實體:
<!-- Enable the second-level cache -->
<property name="hibernate.cache.provider_class">
net.sf.ehcache.hibernate.EhCacheProvider
</property>
<property name="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_structured_entries">true</property>
<property name="hibernate.cache.generate_statistics">true</property>
對於大多數實體,我們使用緩存併發策略CacheConcurrencyStrategy.TRANSACTIONAL
:
@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
我們Maven項目使用Hibernate 3.3.2GA和的Ehcache 2.2.0:
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.3.2.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.3.0.ga</version>
<exclusions>
<exclusion>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.2.1.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>ejb3-persistence</artifactId>
<version>3.3.2.Beta1</version>
</dependency>
很酷,你覺得怎麼樣,滿意?在嘗試了選項1和2後,我感覺它們仍然非常有限,並且根本不像我所希望的那麼簡潔。 – 2011-03-11 18:54:26
直到我們在集羣中啓用同步RMI緩存複製之前,我們配置Hibernate和Ehcache的經驗是相對無痛的。啓用時,Hibernate開始拋出奇怪的異常。爲了解決這些異常,我們啓用了'hibernate.cache.use_structured_entries'。 Hibernate的後續版本可能沒有這個問題,但是當我們試圖解決這個問題時,我們的環境與Hibernate 3.5.6不兼容。 – 2011-03-11 19:13:03
我在http://stackoverflow.com/questions/3631349/how-do-i-cure-the-cause-of-hibernate-exception-illegalargumentexception-ccurred上記錄了這種體驗。 – 2011-03-11 19:24:38