관리 메뉴

제뉴어리의 모든것

[Section3] [Spring MVC] JDBC 기반 데이터 액세스 계층 - 2 본문

코드스테이츠/정리 블로깅

[Section3] [Spring MVC] JDBC 기반 데이터 액세스 계층 - 2

제뉴어리맨 2022. 8. 27. 22:20

DDD (Domain Driven Design) 란?

도메인 주도 설계 란 의미이다.

말하자면 도메인을 위주로 테이블을 설계하는것이다.

그렇다면 도메인이란?

 

도메인이란?

명확하게 무엇이다라고 말하긴 어렵겠지만, 

어떤 업무 또는 활동과 관련된 영역(범위)라고 생각할 수 있겠다.

예를 들어, 커피 원두를 판매하는 웹앱이 있다고 했을때,

DB에는 어떤 데이터들이 있어야 할까?

당연히 커피 정보, 회원 정보. 주문 정보 같은 것들이 필요할 것이다.

이럴때 커피, 회원 주문 각각을 도메인이라고 할 수 있겠다.

무언가 특정 업무나 처리에 대한 영역인것이다.

회원 정보에는 회원에 대한 정보를 추가, 삭제, 수정과 같은 업무들이 필요할것이기에,

회원도 도메인 (영역) 이라고 할 수 있겠다.

 

애그리거트(Aggregate)란?

비슷한 업무 도메인들의 묶음이라고 할 수 있겠다.

예를 들어 앞서서 말한 회원이라는 도메인이 있다.

회원은 회원이란 도메인에 속하는 하위 도메인으로 회원 정보, 회원 이미지와 같은 도메인들을 둘 수가 있다.

이렇게 도메인의 묶음이 곧 애그리거트이다. 

그러므로, 회원은 애그리거트가 될 수 있다.

그리고 하위 애그리거트인 회원 정보, 회원 이미지는 모두 회원 정보를 기반으로 하여 관련된 데이터들이다.

왜냐하면 회원 이미지란것도 결국 어떤 회원의 이미지인지 회원정보를 가지고 있어야 하기 때문이다.

그렇기에 회원 정보는 애그리거트 내에서 중심(뿌리)가 되는 도메인이기에 애그리거트루트 (Aggregate Root) 라고 한다.