2

私が取り組んでいるプロジェクトでは、キャッシュ目的でehcacheをWebベースのアプリに実装することにしました。ほとんどの場合、(マスターテーブルの)Hibernateキャッシングとクエリキャッシングに使用します。

ただし、DAOレイヤーでのメソッドキャッシングも検討しています。正直なところ、私はそれについて少し懐疑的です。たとえば、DAOレイヤーに、クエリ(既にキャッシュされている)を起動するメソッドがあるということですが、そのメソッドをキャッシュするのは意味がありますか?私の考えでは、メソッドをキャッシュするか、メソッドが最終的に起動するクエリをキャッシュする必要があります。

あなたの意見を教えてください!

4

1 に答える 1

1

私の経験からすると、アプリケーション (およびデータの種類/構造) に大きく依存します。私が現在取り組んでいるアプリケーションには、3 つのビルトイン キャッシュ レイヤーがあります (すべて Ehcache によってサポートされています)。ファサード層。キャッシュは相互に補完するように調整されています (キャッシュ クエリ パラメータ、有効期間、サイズなど)。

したがって、アプリオリに、それが機能しないとは言えません。それを使用してORMレイヤー全体をスキップできる可能性があります。プロファイリングを行っている場合 (私はperf4jが好きです)、少なくとも DAO から取得するのにコストがかかる「ホット」なオブジェクトを最適化できます。Spring Framework を使用している場合は@Cacheable、メソッドにアノテーションなどを適用することで、これを簡単に行うことができます。可能であれば、(ほぼ) ライブ データとリクエストを使用してパフォーマンス テストを行います。

実際、Hibernate の第 2 レベル キャッシュを使用するのは簡単で怠惰な方法だと思います (つまり、良い最初のステップと言えます) が、パフォーマンスの向上は限られています。いくつかのより具体的なキャッシングを使用すると、アプリケーションの一部 (できれば重要なもの) の高速化として、通常は負荷が軽減されて、数百または数千の係数を簡単に取得できます。

于 2012-08-20T11:56:46.410 に答える