값 타입 매핑
- 이전까지의 Member, Delivery에는 주소 정보가 단지 나열되어 있음
// 값 타입 적용 전
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 라는 값 타입을 만들어서 나열된 주소 대신에 사용하도록 Member와 Delivery 엔티티 변경
이제 주소 정보에 필드나 로직이 추가되면 Address 값 타입만 변경하면 됨
// 값 타입 주소(Address)
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
...
}
// 회원(Member)에 값 타입 적용
package jpabook.model.entity;
@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>();
...
}
// 배송(Delivery)에 값 타입 적용
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(배송)]
...
}
'Java-Spring > 자바 ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] 객체지향 쿼리 언어 ② - JPQL (1) (0) | 2022.04.24 |
---|---|
[자바 ORM 표준 JPA 프로그래밍] 객체지향 쿼리 언어 ① - 소개 (0) | 2022.04.21 |
[자바 ORM 표준 JPA 프로그래밍] 값 타입 (0) | 2022.04.19 |
[자바 ORM 표준 JPA 프로그래밍] 프록시와 연관관계 관리 - 실전 예제 (0) | 2022.04.15 |
[자바 ORM 표준 JPA 프로그래밍] 프록시와 연관관계 관리 (0) | 2022.04.14 |