2009-06-13 43 views
7

私はカスタム開発されたORMを現在使用しており、nhibernateに移行しようとしています。NHibernateキャッシュの有効期限

現在、私はL1セッションレベルキャッシングとL2アプリケーションレベルキャッシングの両方を使用しています。

オブジェクトはL1キャッシュによってL2キャッシュから要求されるたびに、最後のロード以降に変更されたデータベースをチェックし、変更された場合にのみロードされます。

NHibernateでこれを行うことはできますか?要するに、キャッシュは常に最新のデータを取得し、オブジェクトの作成と読み込み時間を節約するため、私を傷つけることはありません。

答えて

14

IMHOとにかくDBにヒットする必要がある場合、L2キャッシュを持つことは無意味です。それは正確にキャッシングの全ポイントです。できるだけDBにぶつからないようにしてください。

AFAIKあなたが記述したようなキャッシュストラテジは実装されていませんが、NHibernate L2キャッシュはプラグイン可能なので実装することができます。しかし、私は上記の理由から、私はしません。

NHibernate以外の他のアプリや他のDALが同じDBに当てはまる場合、古いデータの取得は問題になります。その場合、SysCache2の実装を使用できます。この実装では、基になるテーブルのデータが変更されたときに内部的にSqlCacheDependenciesを使用してキャッシュ領域を無効にします。

ファーム内で実行されている単一のアプリケーションの場合は、Velocity providerを使用します。

DBにアクセスするNHibernateアプリケーションインスタンスが1つしかない場合は、any cache strategyが実行され、古いデータの取得について心配する必要はありません。

も参照してください:それは一人として立つよう

0

ビルドでレベル1キャッシュNHibernateの中には非常に洗練されていません-procは自然界にあります。したがって、NHibernateアプリケーションのパフォーマンスを向上させるためには、間違いなく第2レベルのキャッシュが必要です。これは、データベースへの移動時間を短縮します。 NHibernateセカンダリレベルキャッシュにプラグインするサードパーティ製の多くの統合があります。 NCacheはコードの変更が不要な良い例です。続きを読むここから

http://www.alachisoft.com/ncache/nhibernate-l2cache-index.html

関連する問題