JPA 실무 @Entity을 @Embeddable 대체하는 경우가 많은가요?
542
7 asked
안녕하세요.
실무에서 JPA 적용하여 프로젝트를 처음 진행하고 있습니다.
제가 몰랐던 부분을 강의를 듣다 알게 되어 문의 드립니다.
저는 DB Table에 해당하는 class를 만들고 @Entity 정의를 통해 매핑한다고 생각했는데
Table에 1:1 대응하는 class는 필요하겠지만 모든 class에 @Entity 정의를 할 필요는 없는것으로 이해했습니다.
많은 테이블이 밸류매핑으로 처리가 가능할 것 같아서요
(ex. User - UserDetail Table 같이 master-detail 관계 같은 경우.)
14번째 강의 예제인 user - membership_card 테이블의 경우도 @Entity 대신 @Embeddable를 사용해도 될 것 같고
user - best_pick Table 의 경우는 Entity 매핑을 하는 편이 어울릴 것으로 보여집니다.
1.위 내용처럼 실무에서 밸류매핑이 가능한 class의 경우 @Embeddable 어노테이션으로 정의하여 사용하는 경우가 많은 건가요?
2.관계에 따라 동일한 Table이 밸류 매핑 또는 엔티티 매핑으로 해야할 경우는 없는 걸까요?
(User Table에 대응하는 user class가 엔티티가 되고 UserDetail Table에 대응하는 userDetail class가 @Embeddable 가 될 경우
user - best_pick 관계에서 best_pick class에서 user class를 참조 할때 엔티티 매핑 외에 밸류 매핑을 할 수 있는 방법이 있을까요? 이미 user class는 엔티티인 상황인데 @Embeddable 정의를 통해 매핑을 다시 맺을 수 있는 것인지 헷갈리네요.. ㅜㅜ
정확한 이해를 위하여 문의 드렸습니다.
더불어 좋은 강의 감사합니다!! :)
Answer 1
0
@Embeddable은 값(Value)를 표현하는 모델을 매핑할 때 주로 사용합니다.
실무에서 @Embeddable을 잘 활용할수록 모델이 풍부해지죠.
이 값 모델을 잘 활용한다는 것은 그 만큼 조직/개인의 모델 방식/역량하고도 연결이 됩니다.
그래서 조직/개인이 모델을 설계 결과물에 따라 사용하는 비율이 달라집니다.
동일한 테이블을 밸류로도, 엔티티로도 매핑한다는 것은
누군가에게는 엔티티인데, 누군가에는 밸류라는 얘기로 들립니다.
명령 모델과 조회 모델을 나눠서 구현하면 그럴 가능성이 있다고 생각합니다(CQRS).
명령 모델에서는 엔티티엔데, 조회 모델에서는 밸류라던가 하는 식으로요.
패키지 구분에 대해 궁금한게 있습니다
0
10
1
스프링부트 서버 에러나요
0
17
1
코드 자료
0
25
2
조회속도 개선에서 더 개선하는 방법이 궁금합니다.
0
28
2
servlet과 container에 대한 질문입니다
0
24
1
RepositoryTest의 패키지 위치가 domain인 이유
0
30
2
도메인 모델에서 관계와 규칙을 구분하는 방법
0
37
2
16 강의 메세지 retryCount의 의도
0
23
2
JPA Repository 질문이 있습니다!
1
33
2
페이지네이션 처리를 쿼리에서 하는 방식 질문
1
36
1
UserService, CertificationService 책임 분리 기준 질문
0
26
1
spring initialiser 어떤걸 선택해야될지 모르겠어요
0
32
2
구현체가 동적으로 정해질 때, 팩토리 기법을 사용하나요?
0
51
2
Json 요청 처리
1
33
2
로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.
0
27
2
Build 관련 문제 (테스트 관련 문제)
0
43
2
job, step execution 관련 질문 드립니다.
0
32
2
git 링크 안들어가져요 404에러
0
458
1
JoinColumn 질문
0
442
1
1:N 매핑과 해당 방식 차이가 뭔가요?
0
494
2
10강 3:37 질문
0
319
1
7강에서 SecondaryTable을 왜 사용하지 모르겠습니다.
0
627
1
도메인과 JPA 엔티티
0
790
1
상속 관계 엔티티 로직을 분기처리 하는 법?
0
356
1

