Hibernate で遅延読み込みを無効にするにはどうすればよいですか? hbm xml ファイルではなく、持続性アノテーションを使用しています。
ID で 1 つのオブジェクトをフェッチしており、すべてのプロパティをロードしたいと考えています。オブジェクトを使用する前にセッションが閉じられます。
ありがとう!
Hibernate で遅延読み込みを無効にするにはどうすればよいですか? hbm xml ファイルではなく、持続性アノテーションを使用しています。
ID で 1 つのオブジェクトをフェッチしており、すべてのプロパティをロードしたいと考えています。オブジェクトを使用する前にセッションが閉じられます。
ありがとう!
FetchType.EAGER で非遅延ロードするプロパティに注釈を付ける必要があります
@ManyToOne(fetch = FetchType.EAGER)
おわかりのように、遅延ロードされているのは、ロードしているオブジェクトではありません。むしろ、そのオブジェクトの関連付けは怠惰であり、それが望ましい動作である場合は、怠惰にならないように指示する必要があります。
それらのオブジェクトに、積極的にロードしたい関連付けもある場合は、それらにも注釈を付ける必要があります。
すべてのアソシエーションを再帰的に指定することもできますfetch = FetchType.EAGER
が、これはおそらく関心のない大量のデータをロードすることになります。
通常は、少なくともすべての OneToMany および ManyToMany アソシエーションを LAZY に (これがデフォルトです) 許可し、ユースケースで必要な場合 (またはアドホック クエリでそれらをロードする場合) は、セッションを閉じる前にそれらを初期化することをお勧めします。
OneToOne および ManyToOne アソシエーションはデフォルトで EAGER であり、これによりすでに多くのリクエストが生成されています。すべてのユースケースで関連付けを取得する必要がない限り、私は通常、すべてを遅延としてマークすることを好みます。
レイジーをオフにしたいすべてのコレクションとエンティティに fetch = FetchType.EAGER を使用します。
これもチェックしてください: http://techblog.bozho.net/?p=645