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