プロジェクト コードを OSCache から EhCache に移行しようとしています。
OSCache は、第 2 レベルの Hibernate キャッシュ プロバイダーとしてだけでなく、異なる性質の他のオブジェクトを格納するためにも使用されています。それらはすべて、キャッシュ キーが重複していないため、衝突することなく同じキャッシュ インスタンスを喜んで共有しました。
EhCache に移行する際の大きな違いの 1 つは、各リージョンに異なるキャッシュ インスタンスがあることです。これは、異なる性質のデータが別々に存在するため、ルックアップ速度を向上させることができるため、潜在的に優れています。残念ながら、これには構成地獄の代償があります。説明させてください。
OSCache の世界では、キャッシュ容量をたとえば 10000 に設定します。特定のインストールでより多くの RAM が必要な場合、またはその余裕がある場合は、簡単に 50000 まで増やすことができます。EhCache で、すべての地域のこのデルタの部分ごとに設定を変更する必要があります。
さらに、あるインストールではタイプ X のオブジェクトの使用率が高く、別のインストールではタイプ Y のオブジェクトのチャーンが多い場合があります。数十のインストールがあり、各インストールには数百の異なるキャッシュがあります。このためには、キャッシュ パターンの監視と設定の微調整だけを行うだけの人を大量に雇わなければなりません。
CacheManager
ある種のグローバル キャッシュ容量設定があることを期待していましたが、エントリの使用状況に応じて、各内部キャッシュがより多くの容量を求めて戦います。ただし、キャッシュ容量を設定する唯一の方法は、CacheConfiguration
に対して多対 1 である経由CacheManager
です。
これまでのところ、Hibernate がすべてのエンティティに対して 1 つのグローバル キャッシュを使用するように強制するしかありません。誰もそれを行う方法を知っていますか? 私のシナリオに適した他の解決策はありますか?