Rootable의 개발일기
임베디드 타입(Embedded Type) 본문
📌 임베디드 타입(Embedded Type)이란
주로 기본 값 타입을 모아서 새로운 값 타입을 직접 정의하는 것을 말하며, 복합 값 타입이라고도 한다.
임베디드 타입을 포함한 모든 값 타입은 값 타입을 소유한 Entity에 생명 주기를 의존한다.
🔎 예제
Member 엔티티에서 날짜와 관련된 속성, 주소와 관련된 속성처럼 특정 주제와 관련된 값 타입들을 묶어 새로운 값 타입을 정의할 수 있다.
📌 사용 방법
임베디드 타입도 Proxy를 사용하기 때문에 기본 생성자가 필요하다.
📌 장점
- 재사용 가능
- 높은 응집도
- Period.isWork()처럼 해당 값 타입만 사용하는 의미 있는 메서드를 만들 수 있음
- 임베디드 타입은 값 타입과 엔티티 타입 모두 포함할 수 있다.
📌 임베디드 타입과 테이블 매핑
DB 입장에선 임베디드 타입을 사용한다고 해서 바뀌는 것이 전혀 없다.
임베디드 타입은 엔티티의 값일 뿐이다. 그래서 임베디드 타입을 사용하기 전과 후에 매핑하는 테이블은 같다.
🔎 속성 재정의
만약 한 Entity에서 같은 값 타입을 사용한다면 어떤 문제가 발생할까
이때, @AttributeOverride, @AttributeOverrides를 통해 컬럼명 속성을 재정의하여 해결할 수 있다.
참고로 임베디드 타입 값이 널이면 매핑한 컬럼 값은 모두 널이 된다.
Reference:
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
초급자를 위해 준비한 [웹 개발, 백엔드] 강의입니다. JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자
www.inflearn.com
'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 |