Hibernate.initializeは何をしますか?
通常参照される ドキュメント についてのみ話す
Hibernate.initialize(entity.lazyCollection)
何か意味がありますか
Hibernate.initialize(entity)
エンティティに遅延初期化フィールドがある場合は、「はい」と言います。いくつかの大きなBLOBまたはCLOBデータ、または遅延した1対1の関連付け。 20.1.8を参照してください。前者のドキュメントと後者の20.1.3にあります。
参照:
20.1.4。コレクションとプロキシの初期化
私はAlanHayに同意します。これが私の経験です。JUNitテストの実行時にこの問題が発生しました。別のセッションでオブジェクトを読み込もうとしたときに、一部の遅延オブジェクトが読み込まれませんでした。レイジーオブジェクトをメモリにロードするには、Hibernate.initialize(Object)を呼び出す必要がありました。
間もなく、Hibernate.initialize()は、永続コンテキストでオブジェクトをフェッチするための別のクエリを作成します。オブジェクトが熱心にロードされると、JPAはオブジェクトをフェッチするために1つのクエリのみを実行します。したがって、別の違いはサーバーへの呼び出し数です
さらに:1。オブジェクトがnullの場合Hibernate.initialize()は例外をスローします2.レイジーアソシエーションを初期化する方法の良い情報源 http://www.thoughts-on-Java.org/5-ways-to- initialize-lazy-relations-and-when-to-use-them /
Hibernateは、レイジーコレクションやSession.load()などのプロキシオブジェクトを返す場合があります。したがって、プロキシオブジェクトがあり、実際のオブジェクトが必要な場合は、手動で初期化できます。