본문 바로가기

JPA

2월 7일 JPA 값타입 컬렉션에 값 넣기

Member member = new Member();

member.setUsername("member");

member.setHomeAddress(new Address("homeCity" , "street" , "10000"))

//임베디드 타입이기 떄문에 임베디드의 필드들이 해당 테이블의 컬럼으로 생성된다.

 

member.getFavoriteFoods().add("피자");

member.getFavoriteFoods().add("족발");

//member에 컬렉션 타입필드에 값을 넣는다.

//그럼 클래스에서 설정해둔 설정대로 테이블이 만들어지고 FK가 지정된다,

//FavoriteFoods 필드는 컬렉션타입이기 때문에 일단 get으로 불러와서 add메소드로 값을 저장하는 식으로 사용한다.

 

member.getAddressHistory().add(new Address("old" , "street" , "10000"))

member.getAddressHistory().add(new Address("old" , "street" , "10000"))

 

em.persist(member);

*값 타입 컬렉션의 생명주기는 Member에 소속되어 있기 떄문에 

Member만 persist하면 컬렉션을 가지는 테이블이 알아서 생성된다,

 

값타입 컬렉션은 영속성 전에 cascade + 고아객체 제거 기능을 필수로 가진다고 볼 수 있다.