@ElementCollection은 JPA에서 벨류타입 컬렉션을 매핑하기 위해 사용되는 어노테이션이다.
Value Type Collection이란, 엔티티 객체 내에서 단순한 값들의 집합을 나타내는 컬렉션이다.
@ElementCollection을 사용하여 값 타입 컬렉션을 매핑할 때, 해당 컬렉션은 별도의 테이블로 매핑된다.
이 테이블은 엔티티와는 독립적으로 생성되며, 엔티티의 식별자와 함께 외래 키 관계로 연결된다.
아래 코드는 Card라는 클래스를 @Embeddable 어노테이션을 사용하여 값 타입(Embedded Type)으로 정의한 예시이다.Member 와 Card 클래스는 외래키 관계이다.
@Getter
@Setter
@EqualsAndHashCode(of="userNo")
@ToString
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long userNo;
private String userId;
private String userPw;
private String userName;
@ElementCollection
@CollectionTable(
name = "member_card",
joinColumns = @JoinColumn(name="user_no"))
@OrderColumn(name="sub_seq")
private List<Card> cardList;
}
}
@Embeddable
public class Card {
private String cardNo;
private String validMonth;
}