エンティティBの外部キーを持つエンティティAがあります。
entity A --> id, entity_a_name, foreign_key_entity_B
電話すると
return session.createCriteria(EntityA.class).list();
エンティティA内のentityBのプロパティも取得します。必要がない場合にenityBを読み込まないように、遅延読み込みを行うにはどうすればよいですか?
エンティティBの外部キーを持つエンティティAがあります。
entity A --> id, entity_a_name, foreign_key_entity_B
電話すると
return session.createCriteria(EntityA.class).list();
エンティティA内のentityBのプロパティも取得します。必要がない場合にenityBを読み込まないように、遅延読み込みを行うにはどうすればよいですか?
あなたが話している関係のタイプはあなたの説明からは明らかではありませんが、それが多対1または1対1である場合、物事はそれほど単純ではありません。A.entityB
がnull許容(オプションではない)の場合、Hibernateは、プロパティがnullであるかどうかを確認するために、関係を熱心にロードするように強制されます。関係を非オプションとしてマークすることによってのみ(この場合、Hibernateは、それ以外の場合はエラーであるため、nullではないと見なします)、遅延してロードすることができます。
@ LazyCollection:@ManyToManyおよび@OneToManyアソシエーションの怠惰オプションを定義します。LazyCollectionOptionはTRUE(コレクションはレイジーであり、その状態にアクセスするとロードされます)、EXTRA(コレクションはレイジーであり、すべての操作でコレクションのロードを回避しようとします。これは、すべての要素をロードするときに巨大なコレクションに特に役立ちます。不要)およびFALSE(関連付けは怠惰ではありません)
@ Fetch:関連付けをロードするために使用されるフェッチ戦略を定義します。FetchModeは、SELECT(関連付けをロードする必要があるときに選択がトリガーされる)、SUBSELECT(コレクションでのみ使用可能、副選択戦略を使用-詳細についてはHibernateリファレンスドキュメントを参照)、またはJOIN(SQLJOINを使用してロードする)にすることができます。所有者エンティティのロード中の関連付け)。JOINは、怠惰な属性をオーバーライドします(JOIN戦略を通じてロードされた社会は怠惰になることはできません)。