인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

임현강님의 프로필 이미지
임현강

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 도메인과 리포지토리 만들기

domain과 repository 질문

작성

·

7.9K

18

안녕하세요, 강의 듣다 궁금증이 생겨 질문 남깁니다.

질문 1.

domain == vo, repository == dao

이렇게 똑같이 봐도 괜찮은 건가요?

같은 것이라면 왜 vo, dao가 아닌 다른 이름을 사용한 것인지,

다른 것이라면 (vo, dao)와 (domain, repository)의 차이점에 대해서도 알려주시면 감사하겠습니다.

질문2.

강의자료에 나오는 Memberservice, MemberRepository, MemoryMemberRepository들의 클래스 의존관계 그림은.. 
이번 예제의 상황을 고려하여 만들어진 그림인가요? 아니면 실제 업무에서도 저런식으로 구성된다고 보면 되나요?

+

어떤 디비를 사용할지 모르기 때문에 인터페이스로 만들었다는 말이 잘 이해가 안 되는데.. 
디비접근방식을 탑재하지 않은 인터페이스를 만들어놓고 사용할 디비에 따라서 implements해서 사용하겠다..는 말이 맞나요?

답변 3

15

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

안녕하세요. 현강님

질문1

domain != vo 입니다.

vo는 2가지 의미로 사용됩니다.

1. 단순히 데이터 값을 전달하기 위한 용도로 사용되는 객체라는 뜻 (DTO와 같은 뜻으로 혼용해서 사용합니다. 저는 이 경우 DTO라고 합니다. DTO = 데이터를 전송하는 목적으로 사용하는 객체이지요.)

2. 도메인 주도 설계에서 이야기하는 값 객체(Value Object)의 의미가 있습니다. 이 부분에 대한 자세한 내용은 JPA 기본편 강의에서 자세히 설명드립니다.(저는 vo라고 하면 이 의미로 사용합니다.)

repository := dao (비슷함)

이 둘은 거의 같다고 생각하셔도 무방합니다. 좀 더 깊이있게 차이를 설명하면, repotiroy는 엔티티 객체를 보관하고 관리하는 저장소이고, dao는 데이터에 접근하도록 DB접근 관련 로직을 모아둔 객체입니다. 둘다 개념의 차이일뿐 실제로 개발할 때는 비슷하게 사용됩니다.

질문2

실무에서는 딱 하나의 정답이 있는게 아니라 상황에 따른 다양한 선택지를 고려해야 합니다.  다음 내용을 참고해주세요^^

https://www.inflearn.com/questions/16046

감사합니다.

1

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

domain == vo의 2번째 의미는 아닙니다. domain은 entity + 2번째 의미의 vo들의 모음으로 생각하시면 됩니다^^

감사합니다.

0

임현강님의 프로필 이미지
임현강
질문자

(domain == vo의 2번째 의미) 라고 보면 되겠네요. 사실 말씀하신 DTO와 VO의 차이는 잘 와닿지는 않지만.. 이정도로만 받아들이고 그냥 넘어가도 될 것 같다는 생각이 드네요.

추가로 남겨주신 질문 링크도 아주 잘 봤습니다. 평소에 패키지 설정에 대한 비슷한 고민을 한 적이 있어서 도움이 됐습니다. 감사합니다.

임현강님의 프로필 이미지
임현강

작성한 질문수

질문하기