Member member = new Member();
member.setUsername("hello");
member.setHomeAddress(new Address("city" , "street" , "1000"))
//임베디드 타입으로 값을 세팅시 기본생성자를 사용해 매개변수로 값을 필드 순서대로 넣어준다.
member.setWorkPeriod(new Period());
em.persist(member);
우선 member 에서도 임베디드필드에 대한 get ,set을 생성한다.
임베디드에 값을 넣는 방법은 엔티티 클래스에서 임베디드를 new 객체생성해서 넣어준다.
그래서 임베디드는 기본생성자가 필수로 요구된다.
임베디드 타입과 테이블 매핑
-임베디드 타입은 엔티티의 "값" 일뿐이다. (주인인 엔티티가 사라지면 같이 사라진다)
-임베디드 타입을 사용하기 전과 후에 매핑하는 테이블은 같다(테이블의 컬럼이 변경되진 않는다)
-객체와 테이블을 이후 세밀하게(fine.grained) 매핑하는것이 가능 . 이 기능이 임베디드의 핵심이다.
-잘 설계된 ORM 애플리케이션은 매핑한 테이블의 숫자보다 클래스의 숫자가 더많다. (클래스로 많이 세분화 하였다는 의미)
임베디드 타입과 연관관계
{Member (entity)} > {address (value 임베디드)} > {zipcode (value)}
{Member (entity)} > {phoneNumber (value 임베디드)} > {phoneEntity (entity)}
-임베디드클래스가 임베디드를 한번더 가질수도 있고
-임베디드 클래스가 엔티티를 가질수도 있다(fk값만 가지고 있으면 된다,)
-임베디드 필드를 @Column으로 DB와 연결도 가능하다.
'JPA' 카테고리의 다른 글
2월 6일 JPA 값타입과 불변객체 (0) | 2023.02.06 |
---|---|
2월 3일 JPA 임베디드 속성의 재정의 (0) | 2023.02.03 |
2월 3일 JPA 임베디드 타입class와 테이블을 매핑 (0) | 2023.02.03 |
2월 2일 JPA cascade 의 종류 (0) | 2023.02.03 |
2월 3일 JPA 임베디드 타입 (0) | 2023.02.03 |