次のオブジェクト モデルがあります。
class ObjectA{
public string Description {get;set;}
}
class ObjectB{
public string Description {get;set;}
public ObjectA A {get;set;}
}
class ObjectC{
public string Description {get;set;}
public ObjectB B {get;set;}
}
class ObjectD{
public string Description {get;set;}
public ObjectC C {get;set;}
public ObjectA A {get;set;}
}
私のテーブルは次のとおりです。
A: ID(整数)、説明(文字列)
B: ID(整数)、説明(文字列)、A_ID(整数)
C: ID(整数)、説明(文字列)、B_ID(整数)
D: ID(整数)、説明(文字列)、C_ID(整数)、A_ID(整数)
テーブル D の A_ID は、テーブル A の主キーへの外部キーです。これは元々 、 :ObjectAから簡単にアクセスできるようにするために行われました。これにより、データベースを非正規化するこの方法でアクセスするすべてのテーブルに、テーブル A の ID を追加する必要があります ( があり、すべてが に簡単にアクセスしたいと想像してください)。この場合、 は常に への参照を持ちます。ObjectDObjectD.AObjectAObjectEObjectFObjectAObjectBObjectA
すべてのテーブルで A_ID への参照を取り除きたいのですがObjectA、クラスから簡単にアクセスできるようにしたいと考えています。ObjectD.ObjectC.ObjectB.ObjectA必要なときに取得できることはわかっていObjectAますが、それはオブジェクトを遅延読み込みする目的を無効にしているようです。
のテーブルに の IDを持たずに にObjectD直接アクセスできるようにするには、どのようにマッピングすればよいですか?ObjectAObjectAObjectD
注:クラスをマップするために hbm/xml ファイルを使用しています。