Hibernate-or-mappings
Hibernate-O/Rマッピング
これまで、Hibernateを使用した非常に基本的なO/Rマッピングを見てきましたが、3つの最も重要なマッピングトピックがあり、詳細に学習する必要があります。
これらは-
- コレクションのマッピング、
- エンティティクラス間の関連付けのマッピング、および
- コンポーネントマッピング。
コレクションのマッピング
エンティティまたはクラスに特定の変数の値のコレクションがある場合、Javaで利用可能なコレクションインターフェイスのいずれかを使用してそれらの値をマップできます。 Hibernateは、 java.util.Map、java.util.Set、java.util.SortedMap、java.util.SortedSet、java.util.List 、および永続エンティティまたは値の array のインスタンスを永続化できます。
Sr.No. | Collection type & Mapping Description |
---|---|
1 |
これは<set>要素でマップされ、java.util.HashSetで初期化されます |
2 |
これは<set>要素でマップされ、java.util.TreeSetで初期化されます。 sort 属性は、コンパレーターまたは自然順序付けのいずれかに設定できます。 |
3 |
これは<list>要素でマップされ、java.util.ArrayListで初期化されます |
4 |
これは<bag>または<ibag>要素でマップされ、java.util.ArrayListで初期化されます |
5 |
これは<map>要素でマップされ、java.util.HashMapで初期化されます |
6 |
これは<map>要素でマップされ、java.util.TreeMapで初期化されます。 sort 属性は、コンパレーターまたは自然順序付けのいずれかに設定できます。 |
Javaプリミティブ値タイプの場合は<primitive-array>、その他の場合は<array>を使用して、Hibernateは配列をサポートします。 ただし、これらはほとんど使用されないため、このチュートリアルでは説明しません。
Hibernateで直接サポートされていないユーザー定義のコレクションインターフェイスをマップする場合は、カスタムコレクションのセマンティクスについてHibernateに伝える必要がありますが、これは非常に簡単ではなく、使用することはお勧めしません。
関連付けマッピング
エンティティクラス間の関連付けとテーブル間の関係のマッピングは、ORMの魂です。 以下は、オブジェクト間の関係のカーディナリティを表現できる4つの方法です。 アソシエーションマッピングは、双方向だけでなく単方向にもできます。
Sr.No. | Mapping type & Description |
---|---|
1 |
Hibernateを使用した多対1の関係のマッピング |
2 |
Hibernateを使用した1対1の関係のマッピング |
3 |
Hibernateを使用した1対多の関係のマッピング |
4 |
Hibernateを使用した多対多の関係のマッピング |
コンポーネントマッピング
Entityクラスは、メンバー変数として別のクラスへの参照を持つことができます。 参照されるクラスに独自のライフサイクルがなく、所有するエンティティクラスのライフサイクルに完全に依存する場合、参照されるクラスはしたがって*コンポーネントクラス*と呼ばれます。
コンポーネントのコレクションのマッピングも、わずかな設定の違いがある通常のコレクションのマッピングと同様の方法で可能です。 これらの2つのマッピングを例とともに詳しく見ていきます。
Sr.No. | Mapping type & Description |
---|---|
1 |
メンバー変数として別のクラスへの参照を持つクラスのマッピング。 |