Nhibernate-mapping-component
提供:Dev Guides
NHibernate-マッピングコンポーネント
この章では、コンポーネントのマッピングについて説明します。 NHibernateでは、* componentは値オブジェクトです*。 独自のIDはありません。
- この例としては、お金のオブジェクト、財布、または財布にお金が入っている場合がありますが、そのお金の正確な身元は無関係です。
- 独自の主キーはありませんが、コンポーネント自体は所有オブジェクトと同じテーブルに永続的です。
学生が住所を持っている簡単な例を見てみましょう。住所は、それに関連付けられた* Locationクラス*のオブジェクトです。
ここで、次のクエリを実行してデータベースを更新する必要もあります。最初にStudentテーブルを削除してから、Locationクラスの列も含む新しいテーブルを作成します。
次に、直接Studentクラスの一部ではない列をマップしますが、それらはLocationクラスのプロパティであり、Locationクラスオブジェクトはstudentクラスで定義されます。 正しくマップするためのコンポーネントが必要です。 次のコードに示すように、 student.hbm.xml ファイルにコンポーネントを作成しましょう。
このコンポーネントはアドレスであり、これらの異なるプロパティがあります。 この情報を使用して、NHibernateには実際にこれをマップできる十分な容量があります。
次に、新しい学生オブジェクトが作成および初期化され、データベースに保存されるProgram.csファイルを示します。 次に、データベースからリストを取得します。
これで、このアプリケーションを実行でき、NHibernateはそれらの値をデータベースに保存できます。 アプリケーションを実行すると、次の出力が表示されます。
データベース内の値は次のとおりです。
コンポーネントを使用すると、データベーステーブルにある列を独自の個別のクラスに分離できます。
- ここで注目すべきもう1つの点は、Locationはクラスであり、エンティティではないためです。
- これは値型オブジェクトであり、独自の主キーはありません。
- それを含む生徒と同じテーブルに保存されます。
- そのため、ここでコンポーネントを使用しています。
- これにより、クラスレイヤー、クラスの定義方法とデータベースのレイアウト方法を柔軟に変更できます。