디자인패턴

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

마진 2022. 4. 10. 17:40

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