인프런 커뮤니티 질문&답변

dhandand123님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

엔티티 클래스 개발1

@Embeddable 클라스는 보통 마스터 테이블로 쓰이는건가요?

22.09.16 03:42 작성

·

243

0

지속적인 추적이,,필요하지 않을땐 @Embeddable 쓰인다고 하는데

 

테이블의 대부분 데이터는 고정이고 가끔 한두개의 칼럼만 변경될떄 @Embeddable 쓰나요?

답변 1

1

OMG님의 프로필 이미지

2022. 09. 17. 14:12

안녕하세요. dhandand123님, 공식 서포터즈 OMG입니다.
영한님의 JPA 기본편을 참고하시면 많은 도움이 될 것 같은데요, 기본편 자료로 설명드리겠습니다.

값 타임의 정의는 아래와 같습니다.

image강의에서 Address가 값타입으로 쓰이는데, 아래에서 값 타입 분류 중 임베디드 타입이라고 볼 수 있습니다.

image

 

아래와 같은 엔티티가 있다고 할 때, (근무 시작일, 종료일)을 WorkPeriod란 클래스로 묶고,

(도시, 우편번호, 번지) 를 Address란 클래스로 묶을 때

WorkPeriod와 Address 클래스에는 @Embeddable을 선언하고

Member 엔티티의 필드로 WorkPeriod와 Address를 가질 때 WorkPeriod와 Addres에 @Embedded를 선언하는데요.

 image

image

image

 

image이러한 임베디드 타입의 장점은 아래와 같고

image@Embeddable 클래스는 보통 마스터 테이블로 쓰이는지에 대해 질문을 남기셨는데,

임베디드 타입은 결국 엔티티의 값(ex) zipcode, city, street)을 Address로 합친 값일 뿐이고,

값 타입의 생명주기 또한 엔티티에 의존합니다.

image


감사합니다.

OMG님의 프로필 이미지

2022. 09. 17. 14:18

그리고 값 타입은 잘 변경되지 않거나 변경되어도 비즈니스 상 추적할 필요가 없어 엔티티로 승격할 필요가 없는 데이터에 선언하면 될 것 같습니다.