親子関係を維持したいのですが、親オブジェクトを解析するときに子要素をフェッチしたくありません。
1 に答える
プロキシは、Hibernate が初期化されていないアソシエーションへの呼び出しをインターセプトし、オンデマンドでフェッチできるように生成されます。
はLazyInitializationException
コード臭です。を閉じる前に、必要なすべてのエンティティの関連付けを適切に初期化していないため、これを取得しますSession
。取得ポリシーはクエリの責任であるため、EAGER アソシエーションに切り替えることもお勧めできません。
関連付けが不要な場合は関連付けの数を減らし、代わりにクエリを使用してください。多対 1 の関連付け (FK 関係をミラーリング) だけでアプリケーションを構築でき、1 対多の関連付けの代わりに DAO メソッドを使用できます。
この声明について:
親子関係を維持したいのですが、親オブジェクトを解析するときに子要素をフェッチしたくありません。
親/子関係を維持する場合は、使用する前に常に関連付けをロードする必要があります。プロキシを削除しようとすると、アプリケーション層を適切に設計するのではなく、ソリューションをハッキングしようとしているように聞こえます。
したがって、プロキシは問題なく、ルート エンティティにアクセスしようとするときに常にすべての関連付けをフェッチするとは限らないため、アプリケーションのパフォーマンスを向上させることができます。
プロキシを無効にするには、エンティティにProxyアノテーションを付けるだけです。
@Proxy(lazy=false)