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

taeu kim님의 프로필 이미지
taeu kim

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

값 타입 컬렉션

값 타입 컬렉션 대안

작성

·

895

2

값 타입 컬렉션 대안으로 entity에 감싼다고 했는데요

예를 들어 @Embedable인 Address를 그냥 처음부터

@Entity로 승격시켜버리면 되는데 굳이 왜 감싸나요?

답변 1

0

안녕하세요, taeu kim 님! 공식 서포터즈 codesweaver 입니다.

데이터 설계 시 어떤 개념이 엔티티인지 아닌지를 판별하는 일이 가장 중요한데요, 엔티티 여부를 결정하는 기준은 '업무'입니다.

 

업무상 관리할 필요가 있는 데이터는 엔티티로 관리하는것이 맞지만, 그렇지 않은 경우라면 엔티티로 관리하지 않는것이 낫습니다. 엔티티가 많아질수록 시스템은 복잡해지기 떄문입니다. 또 엔티티가 아닌 데이터를 엔티티로 관리할 경우 변화에 대응하기 어려워지기도 합니다.

 

강의에서는 '한 명의 사용자가 한 개의 주소를 갖는다'는 요구사항이 있기에 Address 를 엔티티로 승격하는 것은 과도한 설계가 될 수 있습니다(물론 이런 판단은 개인마다 달라질 수 있습니다). 만약 요구사항이 '한 명의 사용자가 여러 개의 주소를 등록하고 관리할 수 있다' 였다면 사용자와 주소가 1:N이 되므로 그때는 사용자와 Address를 분리, Address 를 엔티티로 승격, 관리하는 방법을 사용해야 합니다.



감사합니다.

taeu kim님의 프로필 이미지
taeu kim
질문자

address를 값 타입으로 관리한다고 하더라도 addressEntity에 감싸면 결국 Entity가 생기는 것이므로

address를 Entity로 하는 경우와 같은 거 아닌가요? 이 차이가 무엇인지 궁금합니다.

taeu kim님의 프로필 이미지
taeu kim

작성한 질문수

질문하기