33.実戦例(値タイプマッピング)
9988 ワード
33.実戦例(値タイプマッピング)
次の例のメンバー、成果物には、アドレス情報がリストされています.
public class Member {
...
private String city;
private String street;
private String zipcode;
...
}
public class Delivery {
...
private String city;
private String street;
private String zipcode;
...
}
次の例では、Addressという名前の値タイプを作成し、リストされたアドレスを使用するように変更します.次の図は、値タイプを使用した結果UMLです.package jpabook.model.entity;
import javax.persistence.Embeddable;
@Embeddable
public class Address {
private String city;
private String street;
private String zipcode;
// Getter, Setter
// Equals, hashCode
...
}
値タイプを
package jpabook.model.entity;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
public class Member {
@Id @GeneratedValue
@Column(name = "MEMBER_ID")
private Long id;
private String name;
// private String city; // 삭제
// private String street; // 삭제
// private String zipcode; // 삭제
@Embedded // 추가
private Address address; // 추가
@OneToMany(mappedBy = "member")
private List<Order> orders = new ArrayList<Order>();
...
}
値タイプはpackage jpabook.model.entity;
import javax.persistence.*;
@Entity
public class Delivery {
@Id @GeneratedValue
@Column(name = "DELIVERY_ID")
private Long id;
@OneToOne(mappedBy = "delivery")
private Order order;
// private String city; // 삭제
// private String street; // 삭제
// private String zipcode; // 삭제
@Embedded // 추가
private Address address; // 추가
@Enumerated(EnumType.STRING)
private DeliveryStatus status; //ENUM [READY(준비), COMP(배송)]
...
}
上記の例のAddress値タイプを作成し、上記の例(メンバーに値タイプを適用)と上記の例(出荷に値タイプを適用)のDeliveryエンティティに適用します.アドレス情報にフィールドまたは論理を追加する場合は、アドレス値のタイプを変更するだけです.リファレンス
Reference
この問題について(33.実戦例(値タイプマッピング)), 我々は、より多くの情報をここで見つけました https://velog.io/@jsj3282/33.-실전-예제값-타입-매핑テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol