1

たとえば、次の 2 つのテーブルのデータベースがあります: Home と Person。これらのテーブル間には 1 対多の関係があります。一つの家にたくさんの人が住んでいます。

さて、次のような状況を想定してみましょう。データベースから 1 人をロードすると、その人が住んでいる家がロードされます。次に、同じ家に住んでいる別の人を読み込みます。問題は、何をロードしているのかということです。新しいホーム オブジェクトですか、それとも最初の人のためにロードされた同じオブジェクトですか? なんで?

4

1 に答える 1

1

同じホーム オブジェクト。Hibernate は PRIMARY KEY によって、すでに手元にあるオブジェクトを追跡し、Person コンストラクターがホームを埋めるようになると、既存のオブジェクトへの参照が使用されます。

一方、Home は「遅延して」フェッチされる可能性があることに注意してください。その場合、この Home のプロキシ (プレースホルダー) のみが両方の Person のフィールドになります。

于 2012-12-09T22:01:22.797 に答える