データベースに記述されたグラフを多対多の関係で接続したとします。各データベース行は、他のすべてのリンクされたノードを指すプロパティを持つNode
クラスに反映されます。Linked
データベースのノードがある場合load()
、Hibernate は他のすべてのノードをメモリにカスケードにロードしますか? Linked
そうでない場合、ロードされていないノードを指すプロパティをどのように埋めますか?
データベースに記述されたグラフを多対多の関係で接続したとします。各データベース行は、他のすべてのリンクされたノードを指すプロパティを持つNode
クラスに反映されます。Linked
データベースのノードがある場合load()
、Hibernate は他のすべてのノードをメモリにカスケードにロードしますか? Linked
そうでない場合、ロードされていないノードを指すプロパティをどのように埋めますか?
load javadocは次のように述べています。
インスタンスが存在すると仮定して、指定された識別子を持つ指定されたエンティティ クラスの永続的なインスタンスを返します。このメソッドは、非識別子メソッドがアクセスされると、オンデマンドで初期化されるプロキシされたインスタンスを返す場合があります。
Hibernate (特に指定されていない場合) は、インスタンスを遅延ロードしてプロキシするため、フィールドにアクセスしようとすると、プロキシがデータベースから値を取得します。
あなたの特定のケースでは、 Linked プロパティは、遅延ロードされたプロパティも持つプロキシを主に指しています。Hibernate では、データベース全体を 1 つのクエリ (またはこの場合は load メソッド) でロードしないようにしています。