본문 바로가기
디자인패턴

도메인모델 패턴(Domain Model Pattern)과 트랜즈액션 스크립트 패턴(Transaction Script Pattern)

by 마진 2022. 4. 10.

Intro

도메인 모델 패턴(Domain Model Pattern)과 트랜즈액션 스크립트 패턴(Transaction Script Pattern)은 무엇인가?

 

 

비즈니스 로직이 어디서 처리되는가?

두 패턴의 차이점은 서비스에 대한 비즈니스 로직의 위치이다.

 

 

Service Layer vs Domain Entity

Web layer - Service layer - Repository layer로 나뉘는 웹 계층구조에서 서비스 레이어가 모든 비즈니스 로직을 처리하는 모델을 '트랜즈액션 스크립트 패턴'이라고 하며 웹 개발자에게 친숙한 구조다. 이때 도메인 엔티티는 아무런 비즈니스 로직이 없는 POJO 클래스로 데이터를 전달하는 역할만 수행한다.

 

Domain Model Pattern은 Web Layered Architecture 에서 도메인 엔티티를 좀 더 객체지향적으로 설계하는 패턴이다.  서비스레이어에 집중된 비즈니스 로직 일부가 도메인으로 이동하여 도메인 엔티티는 도메인 데이터와 함께 비즈니스 로직을 갖는다. 객체지향적 프로그래밍 방식에 더 가깝다.

 

 

간단히 예를 들어 '기름 주유시 비용을 청구하는 임의의 어플리케이션을 상상할 때,

도메인 엔티티는 주유(Refuel), 기름(Oil) 등으로 추상화 될 수 있습니다. Transaction Script 패턴이라면 두 엔티티에는 속성을 나타내는 필드와 필드의 Setter & Getter만 존재하지만 Domain Model 패턴에서는 주유의 발생이라는지 기름의 재고 증감 등의 비즈니스 로직이 엔티티에 존재합니다.

 

 

마지막으로

객체지향적 관점에서 도메인 모델 패턴이 정답인가? 아니다.

두 패턴 장단점이 존재하며 절대적 우위는 없기 때문에 상황에 맞춰 사용하는 것이 바람직하다.

 

(두 패턴의 장단점을 비교 분석하는 내용은 추후 본글을 업데이트하는 방식으로 추가할 에정)

 

 

 

 

[ 참고 ]

 

https://martinfowler.com/eaaCatalog/domainModel.html

 

https://martinfowler.com/eaaCatalog/transactionScript.html

 

인프런 강의

김영한 - 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발v.2.1

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