キャッシュするのに適したものをキャッシュし、キャッシュしてはならないデータのキャッシュを回避する場合に予想される大幅な違い。美が見る人の目にあるように、同じことがパフォーマンスにもあります。 HibernateASの第2レベルのキャッシュプロバイダーを使用する際に留意すべきいくつかの側面を次に示します。
カスタムシリアル化なし-メモリを大量に消費
第2レベルのキャッシングを使用する場合、Kryoなどの高速シリアル化フレームワークを使用できず、Javaシリアル化に固執する必要があります。
これに加えて、エンティティタイプごとに個別のリージョンがあり、各リージョン内に、各エンティティの各キーのエントリがあります。メモリ効率の観点から、これは非効率的です。
リッチオブジェクトを保存および配布する機能がありません
最新のキャッシュのほとんどは、オブジェクトを多数の小さな断片に断片化するコンピューティンググリッド機能も備えており、データのコロケーションが保証された分散タスクを実行する能力が低下します。これはグリッドプロバイダーに少し依存しますが、多くの場合、制限になります。
準最適なパフォーマンス
必要なパフォーマンスの量と、Hibernateの第2レベルのキャッシュを使用しているアプリケーションの種類に応じて、良い選択と悪い選択があります。プラグアンドプレイであるという点では良いです...."一種の..."あなたが得たであろうパフォーマンスを決して圧迫しないので悪いです。また、豊富なモデルを設計することは、より多くの先行作業とより多くのOOPを意味します。
キャッシュ自体のクエリ機能が制限されています
これはキャッシュプロバイダーによって異なりますが、一部のプロバイダーは、IDとは異なるWhere句を使用してJOINを実行するのが実際にはうまくいきません。たとえば、Hazelcastでクエリのメモリインデックスを作成してインしようとすると、私が何を意味するのかがわかります。