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을 생성하여 사용하게 된다.
 
역할
n         Business Object :
Business Object
Data클라이언트를 대표한다.이것은Data source에 접근하여 데이트를 얻거나 저장하는 것을 목표로하는 객체이다.Business ObjectSession Bean, Entity Bean또는 별도의Java Object로 구현된다.
n         Value Object(Transfer Object) :
Data
전송에 사용되는 전송객체를 대표한다. Data Access Object패턴에서 클라이언트에게 전송되는 데이터의 왕복통신비용을 줄이고 객체화된 데이터를 전달하기 위해 사용되며 또,클라이언트로부터Data sourceData을 갱신하기 위해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 PatternCustomer.java이며 사용법은 동일합니다.

Posted by 영웅기삼
,