자바/JPA
[JPA] 값 타입 컬렉션 개요
OverTheHorizon3410
2023. 11. 9. 18:23
@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