본문 바로가기

Dev.../소프트웨어 아키텍처

[SA강좌] Part 4-24 설계 패턴 적용 방법

설계 패턴 적용 방법

설계 패턴을 적용하기 전에 컨트롤러는 도메인 객체를 호출하기만 할 뿐 업무 로직을 가지고 있지 않다고 생각한다. 즉 도메인 객체가 비즈니스 로직을 나누어 가지고 있다.

도메인 객체는 Transaction Script, Table Module, Domain Model로 구별되며 가장 단순하게 구현할 수 있는 방법은 Transaction Script이다. Domain Model은 가장 익숙해지기 어려운 방식이다. 그러나 Domain Model을 사용하면 복잡한 모델도 쉽게 구현할 수 있다. 또한 Domain Model은 데이터베이스와 연결하는 부분이 복잡하다. Table Module은 이 두가지 사이에서 적절한 선택이 될 수 있다.

Data Source Layer에 대해서는 Transaction Script의 경우는 Row Data Gateway나 Table Data Gateway를 사용한다. RecordSet을 사용하고 데이터베이스와의 연결이 자주 끊어지는 경우에는 Table Data Gateway를 사용하는 것이 좋다. Table Modeul은 Record Set이나 Table Data Gateway와 함께 사용하는 것이 좋다. Domain Model의 경우에는 단순할 경우에는 Active Record를 사용하고 도메인 모델과 데이터베이스 연결을 분리할 경우에는 Table Data Gateway나 Row Data Gateway를 사용한다. 모델이 더 복잡한 경우는 Data Mapper를 사용한다.

J2EE의 경우에는 단순한 경우 Session Bean을 Transaction Script로 사용하고 entity bean은 Row Data Gateway로 사용한다. Domain Model을 사용하는 경우는 현재는 entity bean을 사용하는 것이 최상의 방법이다. 이 경우 entity bean은 Active Record로 사용된다. 이 경우 session bean은 remote façade로서 사용된다. 도메인 모델이 더 복잡하면 entity bean을 배제하고 일반 자바 클래스로 구현하면 된다. JDBC row set을 사용하는 경우는 Table Module을 사용한다.

.NET의 경우에는 가장 일반적인 패턴은 Table Module이다. 물론 Domain Model을 사용할 수도 있지만 이것이 .NET의 경우 최선의 선택이다.

Stored procedure는 remote call을 줄이는 좋은 방법이지만 이식성에 문제가 있다. 그러나 성능의 문제가 있을 경우는 도메인 로직을 제거하고 stored procedure로 옮기는 것이 좋다. Stored procedure를 사용하는 가장 좋은 방법은 Table Data Gateway를 사용하는 것이다.