(JPA) Embedded Type

bagt13·2022년 9월 5일
0

JPA

목록 보기
5/13
post-thumbnail

임베디드 타입이란?

기본 값 타입들을 모아 새로운 타입으로 생성된 하나의 값 타입이며, 복합 값 타입이라고도 한다.

임베디드 타입은 int, String과 같은 기본 값 타입들을 포함한 클래스라고 볼 수 있다.

예를 들어 위와 같은 Member 테이블이 있다면, 하나의 범주로 묶을 수 있는 필드들을 아래와 같이 임베디드 타입으로 묶을 수 있다.


임베디드 타입의 장점

  • 필드 개수가 줄어들어 테이블 구성이 간결해지고, 설계 측면에서도 더 자연스러워진다.

    • "회원 엔티티는 이름, 근무 시작일, 근무 종료일, 주소 도시, 주소
      번지, 주소 우편번호를 가진다"

      보다는

    • "회원 엔티티는 이름, 근무 기간, 집 주소를 가진다"

      가 더 자연스럽고 간결하다

  • 해당 값 타입만 사용하는 의미있는 메서드들을 효율적으로 생성하고 활용할 수 있다.

    • 예를 들어, startDateendDate를 사용하여 근무기간을 구하는 메서드를 생성할 때, 임베디드 타입으로 분리하여 메서드를 생성/활용 한다면 훨씬 간결하게 코드를 작성할 수 있다.
  • 임베디드 타입 자체를 다른 엔티티에서 재사용할 수 있다.

    • 예를 들어, 주소(Address)의 경우 회원의 주소, 사업장 주소다양한 곳에서 재사용될 수 있다.

사용법

임베디드 타입(클래스)@Embeddable을 붙여주거나, 임베디드 타입이 사용되는 곳(필드)@Embedded를 붙여준다.

둘 중 하나만 해줘도 되지만, 두 가지 작업 모두 하는 것이 좋다.


임베디드 타입의 특징

  • 임베디드 타입엔티티의 값일 뿐이다.

  • 임베디드 타입을 사용하기 전과 후에 매핑하는 테이블은 같다.

    • startDateendDate를 Period로 묶는다고해서 테이블 구성이 바뀌는 것은 아니다.
  • 잘 설계한 ORM 애플리케이션은 매핑한 테이블의 수보다 클래
    스의 수가 더 많은 경우가 있다.

    • 임베디드 타입을 상황을 고려해 적극적으로 사용하는 것이 좋다.
  • 임베디드 타입은 또 다른 임베디드 타입을 가질 수 있다.

  • 임베디드 타입은 엔티티를 필드에 가질 수 있다.



자료 출처 : 김영한님의 자바 ORM 표준 JPA 기본편

profile
주니어 백엔드 개발자입니다😄

0개의 댓글