모델 영역은 애플리케이션의 비즈니스 데이터와 비즈니스 룰 세트를 정의하는 영역
- 비즈니스 데이터
- 비즈니스 룰 세트 : 데이터베이스나 XML 파일, 웹서비스에 접근하여 데이터를 조회하고 저장하는 규칙들
스트럿츠 기반의 애플리케이션에서는 모델 영역을 위한 프레임워크를 구축해야 한다.
모델영역
- 비즈니스 서비스 계층 : 비즈니스 로직을 캡슐화하여 컨트롤러나 뷰 영역에서 쉽게 비즈니스 로직을 호출하여 쓸 수 있도록 한다.
- 퍼시스턴스 계층 : EIS 계층에 저장된 비즈니스 데이터와 애플리케이션에서 데이터를 표현하기 위해 사용되는 객체를 매핑하는 계층
- EIS 계층(Enterprise Information System) : 주로 오라클이나 MySQL 등의 DBMS 를 통해 관리되는 데이터베이스,
때로는 XML 형태의 파일이나 이미 존재하는 웹서비스
1. 비즈니스 서비스 계층
퍼사드 패턴 : 비즈니스 서비스 계층의 기초. 복잡하게 얽혀있는 로직을 외부에서 쉽게 사용할 수 있도록 API를 제공하는 패턴
싱글톤 패턴 : 클라이언트가 필요할 때마다 매번 생성될 필요 없이 모든 클래스가 단 하나의 인스턴스만 생성하고 공유하는 형태
플라이웨이트 패턴 : 클래스의 인스턴스를 가능한 한 공유하여 최대한 인스턴스를 가볍게 유지하는 패턴.
인스턴스의 수가 특정 값에 따라 한정적으로 존재할 때 인스턴스의 공유가 가능하다.
2. 퍼시스턴스 계층
비즈니스 서비스 계층에서 전달된 데이터를 데이터베이스에 저장하고 데이터가 필요할 때 데이터베이스에서 데이터를 조회해오는 역할
* 퍼시스턴스 계층에서 사용되는 디자인 패턴
1) DAO
비즈니스 로직과 퍼시스턴트 로직을 분리하여 퍼시스턴스 로직만 전담하는 별도의 객체를 두도록 하는 것.
자바에서는 흔히 JDBC API를 캡슐화한 클래스를 지칭.
사용하는 DBMS 에 따라 퍼시스턴스 로직이 달라지는 경우 모든 DBMS 에서 쓰는 일반적인 DAO 를 선언하고 이를 상속하여 특정 DBMS 에 최적화된 DAO 를 구현한다.
2) 데이터 트랜스퍼 패턴(DTP)
웹애플리케이션을 여러 계층으로 분리했을 때 각 계층간 데이터 교환을 위해 사용.
오직 데이터를 담기만 하는 객체 DTO를 선언하고 이를 이용해 각 계층간의 데이터를 교환한다.
c.f. ) Value Object 패턴 : J2EE 디자인 패턴에서 계층간 데이터 교환을 위해 데이터를 담을 Value Object 객체를 선언하는 방법
DTO : 객체의 속성과 속성에 접근하기 위한 게터/세터를 갖는 클래스를 선언하여 계층간 데이터 교환을 위해 사용, VO.
데이터 전달에 효과적이지만 코드가 대량으로 작성되어야 한다.
3) DT HashMap
데이터가 너무 많거나 자주 변경되어 DTO 가 이를 선언하거나 수정하기 어려울 때
DTO를 선언하는 대신 자바의 HashMap 객체에 데이터의 이름과 값을 담아 전달하는 것.
데이터 조회를 위한 부하가 심하고 모델영역에서 서비스 선언만 보고는 어떤 데이터가 전달되는지 알기 어렵다.
4) DT Rowset
데이터베이스에서 조회된 데이터를 전달하기 위해 JDBC API 2.0 에서 새로 추가된 javax.sql.Rowset 클래스를 이용.
DTO든 DT Hashmap 이든 DB에서 조회된 데이터를 DT에 담을 때 Rowset 을 이용하여 간단히 할 수 있다.
select 쿼리에서 사용되는 칼럼명이 key 값이기 때문에 데이터에 접근하려면 컬럼명을 알아야 한다.
|