0

次のようなステートメントを定義するのではなく、ehcacheを使用する場合

 <cache name="testonly.package.model.TestPOJOcategory"
        maxElementsInMemory="200"
        eternal="true"
        overflowToDisk="false"
        timeToIdleSeconds="300"
        timeToLiveSeconds="600"
    />

使用しているキャッシュプロバイダーに関係なく、エンティティ内で直接定義できますか?

@Cache(
  type=CacheType.SOFT, 
  size=64000 
  expiry=36000000,  
  coordinationType=CacheCoordinationType.INVALIDATE_CHANGED_OBJECTS 
)

参照: http://wiki.eclipse.org/EclipseLink/Examples/JPA/Caching (EclipseLink に対してのみ表示され、ehcache に対しては表示されませんでした)

4

2 に答える 2

4

まず、ほとんどの JPA 永続化プロバイダー (Hibernate、EclipseLink など) が第 2 レベル キャッシュのサポートを提供している場合でも、JPA 1.0 は第 2 レベル キャッシュのサポートを指定していません。そのため、L2 キャッシュで遊んでいる場合、実際には、標準ではなく、あるプロバイダーから別のプロバイダーに移植できない JPA 拡張機能を使用しています。Hibernate の@Cacheアノテーションは EclipseLink の@Cacheアノテーションと同じではなく、OpenJPA の@DataCacheアノテーションとは比較できません。これらはすべて異なり、所有権があります。Hibernate を使用している場合 (これは以前の質問に対する私の理解です)、EclipseLink 独自のもの (または文化のみを対象としていますが、この質問は文化を超えている可能性があります) を見るべきではありません。

次に、EclipseLink の@Cache注釈が EHCache と関係があると考える理由は何ですか? 私の知る限り、EclipseLinkはEHCacheとは関係のない独自のキャッシュ実装を使用しています。

実は、ここで少し迷っているような気がします。少しペースを落として、ステップごとに物事を進める必要があるかもしれません。1 つのソリューションを選択し、それに固執し、何をしなければならないかを特定し、1 つ 1 つ実装して、すべてを機能させます。目標に集中し、今はそれ以上の情報を収集するのをやめ、学んだ新しいことを消化するために時間をかけてください.

于 2009-12-03T07:17:20.740 に答える
2

私が知る限り、Hibernate には次のようなものがあります。

@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class TestPOJOcategory {
...
}

この注釈には、さらに 2 つの属性がregionありincludeます。サイズ、有効期限などを設定するために、私は何も知りません。EhCache のドキュメントを検討する必要があると思います。

于 2009-12-03T05:40:13.900 に答える