問題タブ [second-level-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 「キャッシュされたアイテムがロックされました」により、HibernateでSelectステートメントが発生します
キャッシングをHibernateで希望どおりに機能させるのに問題があります。私が抱えているこの問題を再現するために、いくつかのサンプルコードを作成しました。
それ自体のインスタンスを含むオブジェクトが1つあります。たとえば、より多くのパーツで構成されているパーツ。
更新されたオブジェクトが入ってくるときにHibernateが使用するselectステートメントを本当に最小化する必要があります。ログを調べた後、SELECTステートメントを引き起こしている次のログ出力が表示されます。
キャッシュされたアイテムがロックされました:com.cache.dataobject.Part.parts#1
キャッシュされたアイテムがロックされないように、アノテーションマッピング、xmlファイル、キャッシュプロバイダー、またはロジックで何を変更できますか?私は本当にそのselectステートメントを取り除きたいです。
Entity、DataObject、テスト対象のコード、およびログ出力を含めました。
Hibernateバージョン: 3.4
EHCacheバージョン: 1.2.3(Hibernateダウンロードに含まれています)
パーツDataObject:
CacheDao:
クライアントコードのテスト:
Persistence.xml
EhCache.xml
出力ログ:
nhibernate - 流暢なマッピングとSyscache2の第2レベルのキャッシングを備えたNHibernate
キャッシュしたい非常に単純なCountryエンティティがあります。これは完全に機能しますが、開発者がインスタンスの状態を変更できないように、キャッシュされたインスタンスのクローンバージョンを返すか、読み取り専用にする必要があります。
どうすればこれを達成できますか?Fluent Readonly()メソッドがこれを強制するだろうと思いましたが、そうではありません。
流暢なマッピングのサンプル:
私の単体テストは、エンティティがキャッシュされ、同じエンティティが後続の取得で返されることを明確に示していますが、永続ストアからロードされたオブジェクトは不変である必要があります。
ありがとう!
java - orm.xmlで第2レベルのキャッシュを休止状態にしますか?
何時間もグーグルしてきましたが、ユーザーはxmlファイル(orm.xml、おそらく?)またはJPAの注釈、あるいはその両方を同時に使用できることに気付きました。私は正しいですか?そのため、私のプロジェクトでは、JPA仕様に含まれていない第2レベルのキャッシュを使用しています。そして、私は次のようなアノテーションを使用します: @ org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)
エンティティごとに。ただし、上記のアノテーションはJPAアノテーションではないと思いますので、orm.xmlに同等のものがあるかどうかわかりません。orm.xmlのxmlスキーマを見てきましたが、スキーマで許可されているそのような休止状態の要素はありません。
orm.xmlで第2レベルのキャッシュ構成を実行できない場合、アノテーション以外の方法はありますか?アノテーションを付けたくない理由は、2つのアプリケーションがあるためです。1つはREAD_WRITE同時実行戦略を使用し、もう1つはREAD_ONLY同時実行戦略を使用します。
前もって感謝します!!!
可為
java - 注釈を変更せずに、Hibernate で特定のエンティティの 2 次キャッシュを無効にする方法
アプリケーションで Hibernate のセカンド レベル キャッシュを使用しています。特定のビジネス上の理由から、エンティティ アノテーションを変更できなくなりました。
私のプロジェクトでは、データベースを Hibernate から変更する以外に、Hibernate を経由しないネイティブ SQL が他にも存在します。したがって、データベースがネイティブ SQL から更新された後、Hibernate の第 2 レベルのキャッシュ データが古くなる可能性があります。そのため、特定のエンティティの 2 次キャッシュを無効にする必要があります (プログラムによって、または注釈を変更する以外の方法で)。
前もって感謝します!
java - Hibernateの第2レベルのキャッシュehcache.xml、エンティティのキャッシュ設定をHIbernateに読み取ることができません
明確で簡単にするために、2つのプロジェクトがあります。1。このプロジェクトにすべてのエンティティクラスがあるエンティティプロジェクト。2.アプリケーションを実行するためのmain()関数を含むプロジェクト、Myehcache.xmlはこのプロジェクトのクラスパスに配置されます。
私の問題は次のとおりです。ehcache.xmlのdefaultCache要素を変更でき、SQLログファイルから変更を確認できます。ただし、HibernateはdefaultCache要素のみを読み取ると思います。これは、 ehcache.xmlの特定のエンティティのキャッシュ要素を変更しても、SQLログには変更がないためです。
例: defaultCache要素のmaxElementsInMemoryを0に設定した場合、エンティティのキャッシュ要素のmaxElementsInMemoryを100または0に設定しても、そのエンティティは2番目のレベルのキャッシュにキャッシュされません。defaultCache要素のmaxElementsInMemoryを100に設定すると、エンティティのキャッシュ要素のmaxElementsInMemoryを100または0に設定しても、そのエンティティは常に2番目のレベルのキャッシュにキャッシュされます。
では、エンティティのキャッシュ要素のname属性が誤って設定されており、Hibernateから読み取ることができないのではないでしょうか。
java - ehcache.xmlでQueryCacheを構成する方法
私のSQLログファイルから、QueryCacheの物理プロパティは次の要素によって構成されていると思います。
また、以下の要素をehcache.xmlに追加した場合でも、SQLログから、QueryCacheの物理プロパティは引き続きエレメント。
メモリ内のQueryCacheを有効にし、その間、デフォルトで他の(メモリ内の)ものを無効にしたいだけです。多分の名前属性要素が正しくありませんか?本<>からコピーします。または、他の要素を使用する必要がありますか?たぶん、ある種の要素がありますか?
ありがとう。
hibernate - Hibernateの第2レベルのキャッシュ<>>
hibernateプロジェクトで2番目のレベルのキャッシュを使用したいのですが、hibernateの2番目のレベルのキャッシュについて少し知っています。コードでこれをどのように使用するか、必要な構成と.jarファイルを説明できますか?これらの設定をhibernate.cfg.xmlファイルに設定しました
これらのjarファイルehcache-1.6.1.jar, ehcache-1.6.1-javadoc.jar, ehcache-1.6.1-sources.jar
を追加してください。他の構成を変更する必要がありますか?
プロジェクトが第2レベルのキャッシュを使用していることをどのように理解できますか?
この設定を行うだけの場合、休止状態はこれを自動的に使用するか、.javaクラスで他のコードを使用する必要があります(注釈など)
hibernate - クラスターの L2 キャッシュを休止状態にする
Q1: このベンダーだけがクラスターで Hibernate L2 キャッシュをサポートしているというのは正しいですか?
- Hibernate の Terracotta (商用)
- SwarmCache (2003 年以降はリリースされていません)
- JBoss キャッシュ 1.x
- JBoss キャッシュ 2
Q2: Hibernate L2 キャッシュに代わるものはありますか? (おそらくDBキャッシング?)
hibernate - HibernateのトランザクションL2キャッシュ
Q1: 「トランザクション」戦略は何を保証しますか?
Q2: JTAをトランザクションマネージャーとして使用する「トランザクション」戦略と「読み取り/書き込み」戦略の違いは何ですか(プロパティで指定)。
Q3: .hbm.xmlファイルで一部のエンティティに「トランザクション」戦略を指定し、「トランザクション」戦略をサポートしないL2キャッシュを使用するとどうなりますか。