2

I'm using ORMLite and wanted to know if there is a way to implement a cache in order to prevent querying multiple times for the same object. For example when it is annotated as "foreign = true" and "foreignAutoRefresh = true"

The question is not about "how to make a cache" but "how can I make ORMLite look for an object in, say, a WeakHashMap and query for it in the DB if it is not found there"

4

2 に答える 2

3

私はAndroid用のORMLiteをしばらく使用していますが、ネイティブに組み込まれていない場合は、そのようなキャッシュを使用しないことをお勧めします。Hibernateのキャッシュでさえ、時々あなたにいくつかのトリックを演じます、そして彼らは文字通りそれに何年もの努力を注ぎます。むしろ、DAOなどでミニキャッシュを構築したいと思います(たとえば、ここで説明するように)。これにより、とにかくより詳細な制御が可能になります(私にとってはかなりうまく機能します)。ところで、ORMLiteの主な貢献者は、更新の問題のために「foreignAutoRefresh」を削除することさえ検討しました。

于 2011-06-20T12:25:11.863 に答える
3

参考までに、バージョン 4.26 でORMLiteネイティブにオブジェクト キャッシュを追加しました。デフォルトでWeakReferenceおよびキャッシュをサポートし、単純な LRU キャッシュを含む場合があります。SoftReference

ただし、ORMLite の名前に合わせて、キャッシュはかなり「軽量」です。@Manmal は、Hibernate のキャッシュの制限と、注意しないとだまされる可能性について言及していることは確かに正しいです。

これは進行中の作業でありormlite-cache、将来的にはより複雑なキャッシュを含むパッケージを開始する可能性があると思います.

于 2011-09-07T17:54:39.940 に答える