Rootable의 개발일기
임베디드 타입(Embedded Type) 본문
📌 임베디드 타입(Embedded Type)이란
주로 기본 값 타입을 모아서 새로운 값 타입을 직접 정의하는 것을 말하며, 복합 값 타입이라고도 한다.
임베디드 타입을 포함한 모든 값 타입은 값 타입을 소유한 Entity에 생명 주기를 의존한다.
🔎 예제
Member 엔티티에서 날짜와 관련된 속성, 주소와 관련된 속성처럼 특정 주제와 관련된 값 타입들을 묶어 새로운 값 타입을 정의할 수 있다.
📌 사용 방법
임베디드 타입도 Proxy를 사용하기 때문에 기본 생성자가 필요하다.
📌 장점
- 재사용 가능
- 높은 응집도
- Period.isWork()처럼 해당 값 타입만 사용하는 의미 있는 메서드를 만들 수 있음
- 임베디드 타입은 값 타입과 엔티티 타입 모두 포함할 수 있다.
📌 임베디드 타입과 테이블 매핑
DB 입장에선 임베디드 타입을 사용한다고 해서 바뀌는 것이 전혀 없다.
임베디드 타입은 엔티티의 값일 뿐이다. 그래서 임베디드 타입을 사용하기 전과 후에 매핑하는 테이블은 같다.
🔎 속성 재정의
만약 한 Entity에서 같은 값 타입을 사용한다면 어떤 문제가 발생할까
이때, @AttributeOverride, @AttributeOverrides를 통해 컬럼명 속성을 재정의하여 해결할 수 있다.
참고로 임베디드 타입 값이 널이면 매핑한 컬럼 값은 모두 널이 된다.
Reference:
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
'JPA' 카테고리의 다른 글
페치 조인(Fetch join) (0) | 2023.08.21 |
---|---|
값 타입 컬렉션(Collection Value Type) (0) | 2023.08.18 |
값 타입 (0) | 2023.08.18 |
영속성 전이(CASCADE)와 고아 객체 (0) | 2023.08.17 |
즉시 로딩과 지연 로딩 (0) | 2023.08.17 |