임베디드 타입, @Embeddable, @Embedded
2021. 1. 21. 15:15ㆍJPA/JPA
임베디드 타입
- 새로운 값 타입을 직접 정의해서 만든 값타입.
- 여러가지 값타입을 모아서 만들 수 있음.
- 임베디드 타입을 사용하기 전과 후에 매핑되는 테이블은 변하는게 없다.
임베디드 타입 사용법
- @Embeddable: 값 타입을 정의하는 곳에 표시
- @Embedded: 값 타입을 사용하는 곳에 표시
- 기본 생성자 필수
- 한 엔티티에서 같은 값 타입을 사용할 경우 컬럼명이 중복되는것을 피하기 위해 @AttributeOverrides, @AttributeOverride를 사용해서 컬러 명 속성을 재정의
- 임베디드 타입의 값이 null이면 매핑한 컬럼 값은 모두 null
- 임베디드 타입은 객체 타입이기 때문에 = 연산자를 사용할 경우 공유 참조가 된다.
- 따라서 불변 객체로 설계하여 사용해야한다. (생성자로만 값을 세팅하고 setter를 만들지 않으면 된다.)
- 값타입의 비교를 위해 equals 메소드를 재정의 해서 사용한다.
임베디드 타입의 장점
- 재사용
- 높은 응집도
- 해당 값타입만 사용하는 의미있는 메소드를 만들 수 있음
- 값 타입을 소유한 엔티티의 생명주기에 의존할 수 있음
'JPA > JPA' 카테고리의 다른 글
엔티티에 setter를 사용하면 안되는 이유와 대체방안 (0) | 2021.01.29 |
---|---|
준영속상태의 엔티티를 변경할 때 변경감지와 merge() (0) | 2021.01.29 |
cascade, orphanRemoval (0) | 2021.01.20 |
지연로딩과 즉시로딩 (0) | 2021.01.20 |
상속관계 매핑 (0) | 2021.01.19 |