값 타입을 컬렉션에 담아 사용하는 것
엔티티를 일대다 같은 식으로 사용했었는데 이런식으로 값을 넣어 사용한다.
@Entity
public class Member {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String username;
@Embedded
private Period workPeriod;
@Embedded
private Address homeAddress;
@ElementCollection
@CollectionTable(name = "favorite_food", 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<>();
// ...
}
Member member = new Member();
member.setUsername("m1");
member.setHomeAddress(new Address("home_city", "home_street1", "home_zipcode"));
member.getFavoriteFoods().add("피자");
member.getFavoriteFoods().add("족발");
member.getFavoriteFoods().add("치킨");
member.getAddressHistory().add(new Address("city2", "street2", "zipcode2"));
member.getAddressHistory().add(new Address("city3", "street3", "zipcode3"));
em.persist(member);