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

두잇베스트님의 프로필 이미지
두잇베스트

작성한 질문수

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

주문 서비스 개발

객체 연관관계 매핑 및 객체 지향 설계에 대해

작성

·

215

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

테이블 설계를 하다가, 연관 관계 매핑에 대해서 고민을 하게 되었습니다.

객체간의 연관관계 매핑은 정말 좋은 기술이더라구요. 여러 객체들간의 의존관계를 묶어주고 필요할때, 연달아서 조회할 수 있고 , update도 가능해서, 근데 여기서 고민을 하게 되었습니다.

연관관계 매핑이라는것이 다른 테이블 설계를 할때 진짜 여러 객체를 물고 있더라구요. 어? 얘도 A,B연관관계 매핑이 되네. 얘도 매핑시키고 또 B에서 C도 매핑이 되네. 끊임없이 매핑을 저도 모르게 하고 있더라구요. 여기서 또 제 나름 객체 지향도메인 설계를 해보겠다고 하여, 객체안에서 처리하려고 하면 예를 들어 order라는 객체안에서 order라는 주문을 처리하려고 , 주문과 관련된 모든 객체를 끌어다가 처리하고 있더라구요. 근데 이러한 방식이 수정시에 side effect로 큰 문제가 생기더라구요. 여기 고치고 저기 고치고 하는 문제로. 갈피를 못잡는 문제가 생깁니다.

어떻게 하면 객체 연관 관계 매핑을 잘할수있을까 싶어서 질문드립니다. 맺고 끊음을 확실히 하는게 맞을거 같다는 생각이 들어서. 근데 말만 하면 모든 객체를 연관관계를 할수있는거 같고, 해결책이 없을까 질문드립니다. 모든 객체를 연관관계 시키는게 맞는것인지. 그리고 객체 지향적 도메인 설계에 대해서 질문도 드려봅니다..

 

답변 1

2

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

안녕하세요. 두잇베스트님

애플리케이션 아키텍처에 대한 질문인데요. 단순해보이지만, 사실 많은 공부와 경험이 있어야 자신만의 답을 찾을 수 있는 부분입니다.

간단하게 답변을 드릴 수 있는 주제가 아니어서 찾아볼 수 있도록 몇가지 추천을 해드릴게요.

도메인 주도 설계에 대해서 공부해보시면 원하는 답을 찾아가실 수 있을거에요.

도메인 주도 설계에 대해 다양한 서적이 나와 있으니 찾아서 공부해보시면 도움이 되실거에요.

참고로 연관 관계를 어디까지 가지고 가야 하는 주제는 도메인 주도 설계의 바운드디 컨텍스트(Bounded Context)와 관련이 있습니다.

그리고 객체 안에서 모든 기능을 수행하는 것이 맞는가?에 대해서는 의문을 던질 필요가 있습니다. 객체 스스로의 단순한 기능을 할 때는 유용하지만, 연관된 객체가 있을 때는 해당 기능을 서비스 계층으로 끌어올릴 필요가 있습니다.

추가로 우리가 모든 코드를 객체지향으로 설계하는 것이 답은 아닙니다. 객체지향 + 절차지향 코드를 함께 잘 가지고 가는 것이 필요합니다.

클린 코드에 보면 6장 객체와 자료 구조라는 부분을 보시면 도움이 되실거에요.

감사합니다.

상세한 답변 정말 감사합니다.
그래도 명확한주제를 주셔서 궁금한점을 공부할 수 있는 뚜렷한 길이 생겼습니다.
더불어,, 도메인 주도 설계 관한 서적이 많은데, 도서 추천 가능할까요??

항상 좋은 강의로 매번 감사드립니다 😆

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

도메인 주도 설계 관련해서는 서점에서 본인에게 맞는 가장 쉬운 책 부터 시작하는 것은 권장드려요 🙂

 

두잇베스트님의 프로필 이미지
두잇베스트

작성한 질문수

질문하기