jpa エンティティの ehcache.xml を設定しますか、それともアノテーションを使用しますか?

StackOverflow https://stackoverflow.com/questions/1837715

質問

のようなステートメントを定義するのではなく 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 (ehcacheではなく、EclipseLinkについてのみ表示されました)

役に立ちましたか?

解決

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

2 番目に、EclipseLink の理由は次のとおりです。 @Cache アノテーションはEHCacheと何か関係がありますか?私の知る限り、EclipseLinkは独自のを使用しています キャッシュの実装 これは EHCache とは関係ありません。

実は、ここで少し迷っているような気がします。少しペースを落として、段階的に物事を進めるべきかもしれません。解決策を 1 つ選択し、それを使い続け、何をしなければならないかを特定し、物事を 1 つずつ実装し、全体を機能させます。目標に集中し、今はこれ以上情報を集めるのをやめ、学んだ新しいことを消化するのに少し時間を取ってください。

他のヒント

私の知る限りでは休止状態で、我々はこのような何かを持っている、

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

この注釈の2つの属性があります、regioninclude。サイズ、有効期限、およびすべてのそれらのものを設定するには、私は何を認識していないです。あなたは、私は信じて、Ehcacheののドキュメントを検討すべきである。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top