4

編集: 私はこれを数日間調査していると述べるべきです-「Hibernateでehcacheを構成する方法」に関する情報はたくさんありますが、それらはほとんどJPAと注釈の使用について言及していません-それらは純粋なものを参照しています休止状態にするか、XML を介して構成します。(私はこの問題について既にインターネットを使用していることを明確にしたいだけです。) 私は JPA と注釈を使用しているため、これらの構成ガイドのほとんどは、アプリにないファイル (hbm.xml など) を参照しています。ファイル)。

Hibernate 3.6.10.FINAL、Spring Data 1.3.2.RELEASE、Spring バージョン 3.2.1.RELEASE を使用するアプリがあります。休止状態で第 2 レベルのキャッシュを機能させようとしています。ドキュメントによると、次の依存関係と構成を含めるだけでそれを行うことができます。

(POM.XML)

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

(持続性.XML)

        <property name="hibernate.cache.provider_class"  value="org.hibernate.cache.EhCacheProvider"  />
        <property name="hibernate.cache.use_second_level_cache" value="true" />
        <property name="hibernate.cache.use_query_cache" value="true" />
        <property name="hibernate.generate_statistics" value="true" />

javax.persistence.Cacheable アノテーションを使用してエンティティ クラスの 1 つにアノテーションを付け、JUnit テストで統計を表示しようとしました。

public void cacheTest() {
    RandomDataGenerator randomData = new RandomDataGenerator();
    for (int i = 0; i < 10; i++) {
        AppMaster master = masterService.findOne(randomData.nextLong(1, 10));
        logger.debug(String.format("Read one record back = %1$d, %2$s", master.getApplicationId(), master.getApContact()),AppMasterServiceTest.class);
        //  Get statistics from hibernate session
        Session session = (Session)masterService.getEntityManager().getDelegate();
        Statistics statistics = session.getSessionFactory().getStatistics();
        logger.debug(String.format("Second level stats = %1$d, %2$d, %3$d", 
                statistics.getSecondLevelCachePutCount(), 
                statistics.getSecondLevelCacheHitCount(),
                statistics.getSecondLevelCacheMissCount()), AppMasterServiceTest.class);
    }

しかし、統計は常にゼロのようです。

2013-11-11 11:20:33,908 DEBUG [main] test.service.AppMasterServiceTest  - Second level stats = 0, 0, 0

誰かがこれを診断するのを手伝ってくれますか?

4

1 に答える 1