@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;
}