4

?の代わりにFetchType.LAZYwithを使用する必要があるのはなぜですか。withは Eager モードと同じです。そうですか。なぜ置くとは、遅延初期化例外が発生した場合に追加できることを意味します。を直接使用できないのはなぜですか。fetchtype と? を使用する利点はありますか。FetchMode.JOINFetchType.EAGERFetchType.LAZYFetchMode.JOINFetchmode.joinfetchmode=joinfetchtype.Eagerfetchmode.join()

4

4 に答える 4

1

結果セットのデータ モデルが小さい場合、 FetchType.EAGER は、FetchMode.JOIN待機時間とメモリ フットプリントに大きな影響を与えません。

技術的および環境的要因に応じて最適な効率を必要とする大量のデータセット モデルの場合、FetchType.LAZYは、結合テーブル ポインターがそのまま保持され、実際の結果セットはオンデマンドで保持されるという点でより望ましいものです。

例: データセット キーと積極的に結合された家屋オブジェクトは、電話番号オブジェクトと積極的に結合された市外局番オブジェクトと、効率とリソース使用率の点で累積的に異なります。

必要な場合:

  • 小さな結果セットの結合にはFetchType.EAGERを使用します。
  • また、効率が不可欠と見なされる大規模な結果セットの結合にはFetchType.LAZYを使用します。
于 2013-08-05T20:28:55.417 に答える
0

FetchType は、エンティティ アノテーションで使用するのに適しています。ほとんどの場合、lazyload を使用することをお勧めします。

この場合、 を防ぐ必要がある場合は、を使用しLazyIntializationExceptionてロードする基準をアドホックにリクエストできます。eagerFetchMode.JOIN

List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "Fritz%") )
    .setFetchMode("mate", FetchMode.JOIN)
    .setFetchMode("kittens", FetchMode.JOIN)
    .list();
于 2017-11-01T05:15:48.747 に答える
0

With fetch="join" on a collection or single-valued association mapping, you will actually avoid the second SELECT (hence making the association or collection non-lazy)

Referenced from

https://developer.jboss.org/wiki/AShortPrimerOnFetchingStrategies

于 2017-08-10T05:47:18.113 に答える
-1

給与睡眠のリスト (結合) を持つクラス Employee を考えてみましょう。1 人の従業員が 100 人以上の給料睡眠を取っていると言っています。

すべての従業員のリストが必要です(たとえば、1000)。従業員情報のみを表示したいとします (No Salary Sleeps)。しかし、Eager モードでロードすると、すべての給与がすべての従業員でロードされてスリープ状態になります。これはメモリのオーバーヘッドです。

于 2013-04-23T19:06:49.873 に答える