[JPA] JPA 프로그래밍 Value 타입 맵핑
JPA 프로그래밍 Value 타입 맵핑
엔티티 타입과 Value 타입 구분
- 식별자가 있어야 하는가
- 독립적으로 존재해야 하는가
- 위 조건을 만족하면 엔티티
Value 타입 종류
- 기본 타입 (String, Date, Boolean, …)
- Composite Value 타입
- Collection Value 타입
- 기본 타입의 콜렉션
- 컴포짓 타입의 콜렉션
Conposite Value 타입 맵핑
-
@Embedable : Composite한 Value타입은 이 애노테이션을 이용하여 만듦
@Embeddable public class Address { private String street; private String city; private String state; private String zipCode; }
-
@Embedded : Composite한 Value타입을 사용하려면 이 애노테이션 붙여서 사용
-
@AttributeOverrides : 하나의 Composite한 Value타입을 여러개 사용하고 싶으면 이 애노테이션과 아래 애노테이션 조합하여 사용
-
@AttributeOverride
@Embedded @AttributeOverrides({ @AttributeOverride(name = "street", column = @Column(name = "home_street")) }) private Address address;
Address에 있는 street필드를 home_street라는 이름의 컬럼으로 생성한다.