サーチ…
備考
エンティティ間の関係の基礎
外部キーは、一意のキー(通常は主キー)を別のテーブルで参照する1つ以上の列にすることができます。
外部キーとそれが参照するプライマリ親キーの番号と型は同じでなければなりません。
外部キーは、あるテーブルの列から別のテーブルの列への関係を表します。
エンティティリレーションシップにおける多重度
エンティティリレーションシップにおける多重度
乗法は次のタイプのものです:
- 1対1 :各エンティティインスタンスは、別のエンティティの1つのインスタンスに関連しています。
- 一対多 :エンティティインスタンスは、他のエンティティの複数のインスタンスに関連付けることができます。
- 多対1 :エンティティの複数のインスタンスは、他のエンティティの単一のインスタンスに関連付けることができます。
- 多対多 :エンティティインスタンスは、相互に複数のインスタンスに関連付けることができます。
1対1マッピング
1対1のマッピングは、1対1の多重度を持つ別のエンティティへの単一値の関連付けを定義します。この関係マッピングは、対応する永続プロパティまたはフィールドの@OneToOne
アノテーションを使用します。
例: Vehicle
およびParkingPlace
エンティティ。
1対多マッピング
エンティティインスタンスは、他のエンティティの複数のインスタンスに関連付けることができます。
1 @OneToMany
リレーションシップは、対応する永続プロパティまたはフィールドで@OneToMany
アノテーションを使用します。
mappedBy
要素は、対応するエンティティのManyToOneによって注釈された属性を参照するために必要です。
@OneToMany(mappedBy="attribute")
1対多の関連付けでは、エンティティのコレクションをマップする必要があります。
多対1マッピング
多対1のマッピングは、ソースエンティティ(ターゲットエンティティを参照する属性)の属性に@ManyToOne
アノテーションを付けることによって定義されます。
@JoinColumn(name="FK_name")
注釈は、関係のforeingキーをディスクに書き出します。
多対多マッピング
エンティティインスタンスは、互いに複数のインスタンスに関連付けることができます。
多対多リレーションシップは、対応する永続プロパティまたはフィールドで@ManyToMany
アノテーションを使用します。
3つ目のテーブルを使用して2つのエンティティタイプ(ジョインテーブル)を関連付ける必要があります。
@JoinTable注釈の例
JPAで多対多の関係をマッピングする場合、 @JoinTable
アノテーションを使用して、 @JoinTable
キーの結合に使用されるテーブルのコンフィグレーションを提供できます。
@Entity
public class EntityA {
@Id
@Column(name="id")
private long id;
[...]
@ManyToMany
@JoinTable(name="table_join_A_B",
joinColumns=@JoinColumn(name="id_A"), referencedColumnName="id"
inverseJoinColumns=@JoinColumn(name="id_B", referencedColumnName="id"))
private List<EntityB> entitiesB;
[...]
}
@Entity
public class EntityB {
@Id
@Column(name="id")
private long id;
[...]
}
エンティティAにより実現EntityBに多対多の関係を有するから成る。この例では、 entitiesB
フィールドを、我々は結合テーブルのテーブル名があることを指定する@JoinTableアノテーションを使用table_join_A_B
列によって構成される、 id_A
及びid_B
、それぞれEntityAのテーブルとEntityBのテーブルのカラムid
を参照する外部キー。 (id_A,id_B)
は、 table_join_A_B
テーブルの複合プライマリキーにtable_join_A_B
ます。