@Entity
public class Member {
@Id @GeneratedValue
private Long id;
@Embedded
private Address homeAddress;
// 문자열 집합을 테이블로 매핑
@ElementCollection
@CollectionTable(name="FAVORITE_FOODS",
joinColumns=@JoinColumn(name = "MEMBER_ID"))
@Column(name="FOOD_NAME")
private Set<String> favoriteFoods = new HashSet<>();
// 임베디드 타입의 컬렉션을 테이블로 매핑
@ElementCollection
@CollectionTable(name = "ADDRESS", joinColumns=@JoinColumn(name = "MEMBER_ID"))
private List<Address> addressHistory = new ArrayList<>();
// ...
}
@Embeddable
public class Address {
private String city;
private String street;
private String zipcode;
// ...
}
위와 같은 테이블 구조가 생성되게 된다.
- favoriteFoos 와 addressHistory 를 값 타입 컬렉션으로 가지게 되는 것이다.
기본값 매핑 및 커스텀 매핑
@CollectionTable
어노테이션을 생략하는 경우- JPA 는 기본값을 사용하여 테이블 이름을 지정한다.
- 엔티티 이름 + 컬렉션 속성 이름을 결합한 이름으로 지정한다.
Member_addressHistory
이런식
Uploaded by N2T
'자바 > JPA' 카테고리의 다른 글
[JPA] 값 타입과 불변 객체 (0) | 2023.11.10 |
---|---|
[JPA] 값 타입 컬렉션 (0) | 2023.11.09 |
[JPA] 값 타입 컬렉션 제약사항과 대안적 접근 방법 (0) | 2023.11.09 |
[JPA] 객체지향 쿼리 (0) | 2023.11.09 |
[JPA] JPQL 소개 (0) | 2023.11.09 |