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

renivie님의 프로필 이미지

작성한 질문수

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

객체들간의 연관관계 설정

해결된 질문

작성

·

2.2K

4

안녕하세요.

감사한 마음으로 강의를 수강하고 있습니다.

한가지 질문을 드리고 싶어서 글을 씁니다.

강의에서 진행중인 예제가 JPA shop 이잖아요

현재 강의에서는 회원, 상품,주문 정도로 객체가 생성되어 있는데 보통의 쇼핑몰의 경우 상품에 문의글도 있고 리뷰도 있고..

좀 더 복잡한데 그럼 상품객체에 문의나 리뷰도 모두 연관관계 설정을 해주는게 맞을까요?

jpa를 쓰지 않을때는 테이블간에 FK 관계가 있더라도 일단 설정해 놓으면 테스트 하기가 번거로우니까 데이터는 비즈니스에 맞게 넣되 DDL에서 외래키 설정을 강제하지 않는.. 그런 경우가 있었거든요

jpa는 연관관계를 설정하려면 객체 단위로 포함이 되다보니 아직 개념이 아리송 하기도 하네요

비즈니스 로직에 따라 객체간 연관관계 설정을 느슨하게 가져갈 수도 있는지요?

예를 들어 객체단위로 관계를 맺을것을 그냥 DB처럼 컬럼만 외래키 설정을 해준다거나..

아 그럼 jpa를 쓸 이유가 없어지는 걸까요 ㅜㅜ

책 다시 봐야겠어요 ㅜㅜ

답변 3

5

김영한님의 프로필 이미지
김영한
지식공유자

renivie님 좋은 질문을 주셔서 고마워요. 저도 정말 많이 고민했던 부분이고, 정답이 딱 있는 부분이 아니어서 더 재미나더라구요. ㅎㅎ

도메인 주도 설계를 입문하는데 추천하는 책들입니다.

- 도메인 주도 설계란 무엇인가?

- 도메인 주도 설계 핵심

- DDD START!(최범균)

이 책들을 보고나면 다음에 볼 책들은 스스로 찾으실 수 있을꺼에요^^

새해 복 많이 받고 강의도 더 열심히 준비하겠습니다^^ 고맙습니다.

0

renivie님의 프로필 이미지
renivie
질문자

아~ 따뜻한 답변 정말 감사드립니다.

사실 질문을 올려놓고도 당연히 연관관계를 다 설정해야지 그게 당연한거 아냐? 이런 생각이 머릿속을 맴돌아서 질문글을 지워버릴까...-_- 고민했는데 답변을 생각보다 빨리 주셨더라구요 ㅎㅎ

안 그래도 강의중에 도메인 주도 설계를 언급하신적이 있어 너무나 즐겁게도 공부할게 또 생겼군.. 했는데..

더 기뻐해야겠네요 >.<

혹시 도메인 주도 설계쪽에 추천하실 만한 서적이 있으실까요?

결제한 강의가 몇개 되놔서 공부할게 많기는 하지만  조언 주신대로 추가적으로 공부해 봐야 할 것 같아서요^^;

좋은 강의와 따뜻한 답변에 다시 한번 감사드립니다.

쌓을 곳 없을 정도로 새해 복 많이 받으세용~

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요 renivie님 좋은 질문입니다.

연관관계를 어디까지 가져가야 할지 고민하는 것은 설계에 관한 매우 중요한 고민거리 입니다.

크게는 전체 프로젝트에 연관관계를 가져가고

작게는 모든 연관관계를 다 끊어버리리고 단순히 ID 값(예 String memberId)만 가지고 있는 방법도 있습니다.

여기서 더 나가서 마이크로서비스는 회원, 주문이 완전히 분리되어 있어서, 객체 연관관계를 유지하는 것 자체가 불가능합니다.

결국 이런 고민에서 나온 개념이 도메인 주도 설계(DDD)에 녹아있습니다. 바운디드 컨텍스트, 어그리것 루트 등등

너무 잘개 쪼개도 불편하고, 너무 많이 연결해도 시스템 복잡도가 높아집니다.

이 사이에서 줄타기를 하는 것이 도메인 설계의 묘미이지요.

전체 프로젝트를 바운디드 컨텍스트로 쪼개고, 그 안에서 객체 연관관계를 어디까지 가져갈지 정하는 것이 중요합니다. 서로 의존관계가 강한 부분은 객체 연관관계를 가져가고, 그렇지 않은 부분은 ID 값만 가지고 객체 연관관계를 쪼개내는 것이지요.

도메인 주도 설계에 관련된 책들을 보신다면 크게 도움이 되실꺼에요.

감사합니다^^

renivie님의 프로필 이미지

작성한 질문수

질문하기