最初に@OneToOne単方向マッピングと第2の双方向である2つの例があります。単方向マッピングでは、所有側の表には、他の表のIDを参照する結合列が含まれている必要があります。双方向では両方とも互いに外部キー列を含んでいなければなりません。しかし、自動生成戦略を使用してデータベーススキーマを生成した後、2つの例はデータベーススキーマに同じ効果をもたらします。単方向マッピングは正常ですが、双方向の例には1つの外部キー列しか含まれていませんが、お互いの外部キーを含む必要があります。@OneToOne単方向および双方向
単方向マッピング
@Entity
public class Customer43 {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
@OneToOne
@JoinColumn(name = "address_fk")
private Address43 address;
// Getters, Setters and Constructors.
}
@Entity
public class Address43 {
@Id
@GeneratedValue
private Long id;
private String street1;
private String street2;
private String city;
private String state;
private String zipcode;
private String country;
// Getters, Setters and Constructors.
}
双方向マッピング
@Entity
public class Customer44 {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
@OneToOne
@JoinColumn(name = "address_fk")
private Address43 address;
// Getters, Setters and Constructors.
}
@Entity
public class Address44 {
@Id
@GeneratedValue
private Long id;
private String street1;
private String street2;
private String city;
private String state;
private String zipcode;
private String country;
@OneToOne(mappedBy = "address")
private Customer44 customer;
// Getters, Setters and Constructors.
}
なぜデータベーススキーマの出力は同じであり、なぜ一方向のような双方向のマッピング行為はしますか?
だから、そのメリットとデメリットは何ですか? –
一方向の関連付けの利点は、片面を維持するだけで済むため、管理が簡単だということです。双方向の関連付けの利点は、双方向にナビゲートできることです(顧客の住所を取得するか、住所の顧客を取得することができます)。 –
これはOneToManyとManyToOneに適用されますか? –