jpa エンティティの ehcache.xml を設定しますか、それともアノテーションを使用しますか?
-
11-09-2019 - |
質問
のようなステートメントを定義するのではなく 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つの属性があります、region
とinclude
。サイズ、有効期限、およびすべてのそれらのものを設定するには、私は何を認識していないです。あなたは、私は信じて、Ehcacheののドキュメントを検討すべきである。