2011년 5월 23일 월요일

The Value Object(Transfer Object) pattern

9. The Value Object(Transfer Object) pattern
Value Object 패턴은 처음에 Entity Bean를 사용할 때 필요한 원격 객체의 호출 횟수를 최소화하는 비즈니스 티어의 J2EE 디자인 패턴처럼 사용하기 위해 만들어졌다. EJB2.0 명세 전에는 클라이언트가 원격 호출이 일어나는 EJB 메소드들을 항상 호출했다. 비록 EJB를 호출하는 클라이언트와 EJB가 작동하는 애플리케이션 서버가 같은 곳에 있다고 해도 이런한 원격 메소드 호출은 네트워크 오버헤드에 상당한 영향을 주었다.
Value Object 패턴은 사용자가 요청한 모든 데이트를 가지고 있는 평이한 자바 클래스를 포함한 Entity Bean를 가지고서 네트워크 오버헤드를 완화시키는 역할을 했다.
Value Object는 엔티티 빈을 호출한 애플리케이션에게 반환되고, 호출한 애플리케이션은 Value Object를 가지고 작업을 처리한 후 다시 엔티티 빈으로 Value Object를 되돌려 준다. 호출한 애플리케이션에서 하는 작업은 Value Object에 데이터를 넣거나, 데이터를 가져오는 가져오는 일이다. 엔티티 빈을 사용할 때 예상되는 네트워크 트래픽의 부하를 크게 줄일수 있다.

구조

Value Object pattern class diagram

Value Object pattern sequence diagram


여기서 클라이언트와 서버는 리모트 상에 위치한다고 가정한다.
클라이언트가 Business Object에게 데이터를 요청하면 Business Object는 서버에 Value Object을 생성하고 객체를 직력화 하여 클라이언트에게 전송하게 된다. 클라이언트는 자신의 애플리케이션에 전송된 Value
Object을 생성하여 사용하게 된다.

역할
Business Object :
Business Object는 Data 클라이언트를 대표한다. 이것은 Data source에 접근하여 데이트를 얻거나 저장하는 것을 목표로하는 객체이다.Business Object는 Session Bean, Entity Bean 또는 별도의 Java Object로 구현된다.

Value Object(Transfer Object) :
Data 전송에 사용되는 전송객체를 대표한다. Data Access Object 패턴에서 클라이언트에게 전송되는 데이터의 왕복통신비용을 줄이고 객체화된 데이터를 전달하기 위해 사용되며 또, 클라이언트로부터 Data source의 Data을 갱신하기 위해 Data Access Object에게 변경데이터를 전달 할때도 사용된다.

의도
리모트에 있는 작은 단위의데이터들을 한꺼번에 큰 단위의 데이터에 포함시켜 효율적으로 전송한다.

결론
Value Object(Transfer Object) 패턴을 J2EE의 중요패턴으로 다음과 같은 특징이 있다.
  • Value Object는 데이터베이스에 포함된 데이터의 논리적은 뷰를 표현해줄 수 있다.
  • Value Object 패턴은 데이터들의 관계를 추상화하는 방법(일대일, 다대다)으로 사용할 수도 있다.
  • Value Object는 다양한 Data Source로부터 가져온 데이터를 단일 인터페이스로 표현할 수 있게 한다.
  • Value Object를 사용하는 클라이언트 애플리케이션이 관련되어 있는 동안은 데이터가 어디서 왔는지, 또는 데이터를 어떻게 관리해야 하는지 몰라도 된다.
  • Value Object는 프리젠트 티어, 비즈니스 티어, 데이터 티어를 왔다 갔다 하면서 데이터를 전달한다.


Value Object 레이어를 설계할 때는 다음 사항을 주의 해야 한다.
  • Value Object들은 경량이어야 한다.
  • Value Object는 데이터의 표현일 뿐이다. 비즈니스 로직이 포함되어서는 안된다.
  • Value Object는 데이터베이스에 들어 있는 데이터의 View일 뿐이다.
  • Value Object의 객체 계층 구조를 단순하게 유지하라.
  • 영속성 프레임워크에 존재하는 Value Object들의 수를 관찰하라.
  • 개발자들의 공통적인 실수는 Value Object를 너무 세분화하는 것이다. 많은 Value Object는 유지보수성을 떨어뜨린다.

예제소스

예제소스는 Data Access Object Pattern의 Customer.java 이며 사용법은 동일합니다.

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...