예를 들어, 단일 엔터프라이즈 Bean 인스턴스에서 사용하도록 최적화되어 있습니다. Java Bean 랩퍼와 달리 복사 헬퍼는 원격 엔티티 Bean의 로컬 속성 사본이 있는 단일 복사 헬퍼 오브젝트를 통합합니다.
액세스 Bean은 액세스 Bean에 저장된 사용자 선택 엔티티 Bean 속성의 캐시인 복사 헬퍼 오브젝트를 채택합니다. 이러한 속성의 Getter 및 Setter 메소드는 원격 Getter 및 Setter 호출로 직접 호출하는 대신 로컬 캐시를 직접 처리합니다. 캐시를 실제 엔터프라이즈 Bean 데이터베이스로 비우고 실제 엔터프라이즈 Bean에서 캐시를 새로 고치는 메소드가 제공됩니다. 여러 속성을 가져오고 설정하는 단일 원격 호출을 발행하는 것이 각 속성의 원격 호출을 발행하는 것보다 빠르므로 여러 속성이 있는 엔티티 엔터프라이즈 Bean의 경우 성능이 상당히 향상됩니다.
복사 헬퍼를 작성할 때 엔터프라이즈 Bean의 원격 인터페이스가 변경되어 CopyHelper 인터페이스 및 EJBObject 인터페이스를 확장합니다. 복사 헬퍼 오브젝트를 작성할 때 모든 엔터프라이즈 Bean 속성을 선택하거나 서브세트만 선택할 수 있습니다. 선택한 속성은 엔터프라이즈 Bean 메타 모델에 저장되며 선택사항을 변경할 경우 다시 표시됩니다.
복사 헬퍼 오브젝트는 액세스 Bean에 저장됩니다. Getter 및 Setter 메소드는 원격 엔터프라이즈 Bean 오브젝트 대신 로컬 복사 헬퍼 오브젝트에 위임됩니다. 원격 엔터프라이즈 Bean에 대한 복사 헬퍼의 변경사항을 커미트하거나 원격 엔터프라이즈 Bean에서 로컬 복사 헬퍼를 새로 고치려면 클라이언트 프로그램은 각각 commitCopyHelper() 또는 refreshCopyHelper()를 호출해야 합니다.
Getter 및 Setter 메소드 정의의 JavaBeans 규칙에 따라 엔터프라이즈 Bean의 Getter 및 Setter 메소드를 정의해야 합니다. Getter 및 Setter 메소드가 없는 경우 복사 헬퍼에 해당 필드를 추가할 수 없습니다. 또한 Getter 및 Setter 메소드는 예외를 처리할 수 없습니다.
사용자가 선택한 엔터프라이즈 Bean 속성과 함께 액세스 Bean에서 엔터프라이즈 Bean을 인스턴스화한 즉시 키 오브젝트도 복사 헬퍼 캐시에 저장됩니다. 액세스 Bean에서 키 오브젝트를 가져오려면 __getKey() 메소드를 사용하십시오.
캐시된 속성의 Getter 메소드를 호출하면 액세스 Bean은 다음 프로토콜에 집중합니다.
액세스하는 각 레코드마다 새 복사 헬퍼 오브젝트를 작성하는 간단한 그림으로 다음 예제를 참조하십시오.
public static void main(String[] args) {
String[] dataId = new String[] { "100001", "100002" };
for (int j = 0; j < 2; j++) {
VehicleAccessBean Veh = new VehicleAccessBean();
Veh.setInit_id(new Long(Long.parseLong(dataId[j])));
try {
Veh.refreshCopyHelper();
System.out.println("Car #" + Veh.getId + " is " + Veh.getColor());
} catch (Exception e) {
System.out.println("Exception e:" + e);
}
}
}