1

特にAndroidの場合、Hibernateの軽量な代替品について多くの質問がありました。しかし、そのうちのどれが「アイデンティティマップ」パターンを持っていますか?

このパターンにより、データベース内の行を表すオブジェクトがセッションに1回だけ存在するようになります。–プログラムの一貫性を保つのに役立ちます。マップされたオブジェクトをどこかで変更すると、どこでも変更されます(すべての参照が同じオブジェクトを指しているため)。新しいデータベースクエリを介してオブジェクトを再フェッチするか、以前の呼び出しからオブジェクトを保持するかは関係ありません。ORMは、すべてが同じように動作することを確認します。

Hibernateは、これを「レベル1キャッシュ」で実行します。

4

3 に答える 3

2

ORMLiteは Android ORM パッケージで、バージョン 4.26 (2011 年 9 月 26 日にリリース) の時点で、内部オブジェクト キャッシュの最初のテイクが含まれています。ORMLite には「セッション」パターンはありませんが、ユーザーは任意の DAO にキャッシュを挿入して、いつでもフラッシュできます。キャッシュ サポートのドキュメントは次のとおりです。

http://ormlite.com/docs/object-cache

マニュアルから引用すると、キャッシュは次のことをサポートしています。

  • DAO を使用してオブジェクトを作成すると、キャッシュに追加されます。
  • DAO を使用してオブジェクトを照会すると、オブジェクトがキャッシュ内にある場合は返されます。キャッシュにない場合は、キャッシュに追加されます。これは、生のクエリ メソッドには適用されません。
  • DAO を使用してデータベースでオブジェクトを更新すると、キャッシュに存在する場合は更新されます。
  • DAO を使用してデータベースからオブジェクトを更新する場合、キャッシュに存在する場合は更新されます。
  • DAO を使用してオブジェクトを削除すると、オブジェクトはキャッシュから削除されます。

ORMLite コア パッケージには、2 つのオブジェクト キャッシュの実装が含まれています。1 つは弱/ソフト参照をサポートし、もう 1 つは標準 LRU です。

[明らかに] Hibernate のレベル 1 キャッシュに比べて非常に単純な実装です。フィードバック歓迎。

于 2011-09-26T15:35:03.053 に答える
1

greenDAOはHibernate と同様のセッションをサポートし、ID スコープが付属しています。セッション内では、エンティティは ORM レイヤーによって追跡されます。

于 2011-10-24T09:17:16.853 に答える
0

私も同じことをしようとしています。https://github.com/iainconnor/ObjectCacheについて聞いたことがありますか?

リストの長さとすべての項目を 1 つずつ保存します。

独自の実装を行った場合は、返信してください

乾杯、カロリー

于 2015-02-28T10:37:07.723 に答える