[Spring] Spring Data JDBC DDD, Aggregate

zini9188·2023년 2월 22일
0

Spring

목록 보기
21/33

Spring Data JDBC 기반의 데이터 액세스 계층을 연동하기 위해서는 데이터 베이스의 테이블과 도메인 엔티티 클래스의 설계를 해야 한다.

DDD란?

Domain Driven Design의 약어로 도메인 주도 설계로 해석할 수 있으며, 의미 그대로 도메인 위주의 설계 기법을 의미한다.

좋은 애플리케이션을 만들기 위해 가장 중요한 영역은 구현보다 설계이며 더 나은 결과물을 만들기 위해 고민한 결과가 DDD라고 생각할 수 있다.

도메인이란?

도메인은 비즈니스적인 업무 영역과 관련이 있다.

예를 들어 배달 주문 앱을 만들게 된다면 고객이 음식을 주문하는 과정, 주문 받은 음식을 처리하는 과정, 결제하는 과정 등의 도메인 지식을 서비스 계층에서 비즈니스 로직으로 구현해나가야 한다.

결론적으로 도메인은 우리가 현실에서 접하고 있는 업무의 한 영역으로 볼 수 있다.

애그리거트 (Aggregate)

애그리거트란 비슷한 업무의 하위 수준 도메인들의 묶음을 의미한다.

배달 주문 앱에서 필요한 상위 수준 업무 도메인은 회원, 주문, 음식, 배달, 결제 등이 있을 것이고, 도메인들을 세부적인 정보로 나눠 본다면 아래 그림과 같고, 하위 수준의 도메인으로 볼 수 있다.

애그리거트 루트

위 그림에서 회원, 주문, 결제, 음식 애그리거트에서 회원 정보, 주문 정보, 결제 정보와 같이 도메인을 대표하는 정보를 애그리거트 루트라고 부를 수 있다.

데이터베이스의 테이블 간 관계로 본다면, 애그리거트 루트는 부모 테이블이고, 애그리거트 루트가 아닌 다른 도메인들은 자식 테이블이 되는 것으로 이해할 수 있다.

즉, 애그리거트 루트의 기본키 정보를 다른 도메인들이 외래키 형태로 가지고 있다.

profile
백엔드를 지망하는 개발자

0개의 댓글