4

EHCache 1.5 がバンドルされている Hibernate 3.5.1 を使用しています。

最新の EHCache リリース (2.0.1) を使用したい場合、プロジェクトから ehcache-1.5.jar を削除し、ehcache-core-2.0.1.jar に置き換えるだけですか? 注意すべき問題はありますか?

また、Hibernate マッピング ファイルのキャッシュ「リージョン」は、ehcache 構成 xml のキャッシュ「名前」と同じですか? 私がやりたいのは、2 つの名前付きキャッシュ領域を定義することです。1 つは変更されない読み取り専用の参照エンティティ (ルックアップ リストなど) 用で、もう 1 つは他のすべてのエンティティ用です。したがって、ehcache では 2 つの要素を定義したいと考えています。

<cache name="readonly"> ... </cache>
<cache name="mutable"> ... </cache>

次に、Hibernate マッピング ファイルで、各エンティティに使用するキャッシュを指定します。

<hibernate-mapping>
    <class name="lookuplist">
        <cache region="readonly" usage="read-only"/>
        <property> ... </property>
    </class>
</hibernate-mapping>

それはうまくいきますか?一部のドキュメントは、マップされたクラスごとに個別のリージョン/キャッシュが作成されることを暗示しているようです...

ありがとう。

4

2 に答える 2

2

最新のEHCacheリリース(2.0.1)を使用したい場合は、プロジェクトからehcache-1.5.jarを削除し、ehcache-core-2.0.1.jarに置き換えるだけですか?知っておくべき問題はありますか?

EhcacheをHibernateの第2レベルキャッシュとして使用することに関するEcacheのドキュメントによると、実際にehache-core.jarを使用する必要がありますが、Hibernateの構成を変更する必要もあります。

また、Hibernateマッピングファイルのキャッシュ「リージョン」は、ehcache構成xmlのキャッシュ「名前」と同じですか?

はい。繰り返しになりますが、ドキュメントを参照してください。これについては、ehcache.xmlの構成で説明されています。

それは機能しますか?一部のドキュメントは、マップされたクラスごとに個別のリージョン/キャッシュが作成されることを示唆しているようです

ドキュメントは、これがデフォルトであることをキャッシュマッピングで白地に黒で書いていることを意味していません。

region (optional: defaults to the class or collection role name): specifies the 
name of the second level cache region 

それは機能しますか?技術的にはそうです。それは良い考えですか?わからない。IMOは、HibernateレベルとEhcacheレベルの両方でよりきめ細かい領域を用意することをお勧めします(特に、分散キャッシングと無効化戦略を使用する場合は、すべてのエンティティを無効化する必要はありません)。Hibernateのデフォルトを使用します。

于 2010-04-24T14:55:57.527 に答える
0

Mavenを使用している場合、同じ問題がありました。

hibernate が ehcache 自体をダウンロードするのを防ぎ、ehcache のエントリを提供することをお勧めします。

すなわち

        <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate</artifactId>
        <version>3.2.6.ga</version>
        <exclusions>
            <exclusion>
                <groupId>net.sf.ehcache</groupId>
                <artifactId>ehcache</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

この方法では、バージョン 1.2.3 の場合、内部の ehcache はダウンロードされません。

そして入れます

        <dependency>
        <groupId>net.sf</groupId>
        <artifactId>ehcache-core</artifactId>
        <version>2.4.2</version>
    </dependency>

あなたのPOM.xmlで

それはうまくいくはずです。

于 2013-02-25T07:52:43.883 に答える