EJB 2.x 컨테이너 관리 지속성(CMP) 엔티티 Bean의 경우
부분 오퍼레이션을 지속성 옵션으로 사용하여 CMP Bean의 지속성 속성을
데이터베이스에 업데이트하는 방법을 지정합니다.
부분 오퍼레이션에 대해 NONE 또는 UPDATE_ONLY와 같은 두 가지 값을 선택할 수 있습니다.
부분 오퍼레이션의 기본 설정은 NONE이며, 지속적 속성 필드의 서브세트만
변경된 경우에도 데이터베이스에 대한 CMP Bean의 모든 지속적 속성이
데이터베이스에 저장됩니다. 부분 오퍼레이션의 UPDATE_ONLY 옵션은 데이터베이스에 대한 업데이트를
수정된 CMP Bean의 지속적 속성으로만 제한합니다. Bean의 Setter 메소드가
해당 CMP 속성이 수정되었는지 여부를 결정합니다. 수정은 변경 중인 실제 값을
기반으로 하지 않습니다.
즉, Setter 메소드가 호출되었지만 이전 값과 새 값이 동일하게 남아 있는 경우
CMP 속성이 더티로 간주됩니다.
Bean에 대해 구성된 액세스 목적 정책의 Bean 레벨에서
부분 오퍼레이션을 지속적 옵션으로 지정할 수 있습니다.
부분 오퍼레이션을 지정하는 방법에 대한 세부사항은 엔티티 Bean 2.x에 대한
Bean 레벨 액세스 목적 추가를 참조하십시오.
기능상 이점
부분 업데이트(부분 조작을 위해 UPDATE_ONLY 값 선택) 옵션은 다음과 같은
기능상 이점을 활용할 수 있도록 디자인되었습니다.
- 모든 열이 업데이트될 때마다 CMP Bean에 맵핑된 테이블의 업데이트 트리거가
항상 시작됩니다. 이것은 데이터베이스가 불일치 상태에 있도록 합니다. 또한 특정 열이
업데이트되는 횟수 또는 특정 열이 업데이트되는 시간에 따라 트리거 논리가 전체적으로
올바르게 업데이트되지 않습니다.
부분 업데이트를 사용하면 이러한 제한사항이 없어지고 CMP Bean으로 업데이트 트리거를
사용할 수 있습니다.
- 부분 업데이트에서는 낙관적 동시성에 대한 술어로 널 입력 가능 열을
사용할 수 있습니다.
성능 이점
부분 업데이트 옵션은 다음과 같은 성능 이점을 활용할 수 있도록
디자인되었습니다.
- 조회에 열의 서브세트만 있으므로 조회 실행 시간이 단축됩니다. 많은 열과 색인이
포함된 테이블의 경우 시간이 더 많이 단축됩니다.
예를 들어, 테이블에 색인이 여러 개 있는 경우 업데이트된 열의 영향을 받는 색인만
백엔드 데이터베이스에서 업데이트하면 됩니다.
- 전송되는 데이터가 줄어들기 때문에 네트워크 I/O가 감소됩니다.
- 비용이 많이 드는 변환기, 작성기 또는 기타 복잡한 변환이 있는
변경되지 않은 CMP 필드의 처리 시간이 절약됩니다. 다시 말해 변환기, 작성기 또는
기타 복잡한 변환으로의 맵핑과 같이 백엔드 데이터베이스에 자주 맵핑되는 CMP 필드의 경우
해당 CMP 필드가 변경되지 않은 상태로 남아 있으면 이 처리를 위한 실행 시간이 절약됩니다.
- 불필요한 업데이트 트리거가 시작되지 않도록 합니다. 예를 들어, CMP 필드가
변경되지 않은 상태로 유지되면 해당 열에 따라 트리거가 시작되지 않습니다.
성능 역효과
부분 업데이트가 성능을 향상시키기 위해 디자인되었지만 성능에 부정적인 영향도
미칠 수 있습니다. 부분 업데이트를 사용하려는 경우 다음 요소도 고려하십시오.
제한사항
- 부분 업데이트가 사용되면 배치 업데이트 성능이 저하될 수 있습니다. 업데이트 조회의 배치 업데이트에 대한 기본 설정은
부분 업데이트를 사용하도록 설정한 경우 모든 CMP Bean에 대해 사용 안함입니다. 즉, 부분 업데이트가
배치 업데이트보다 높은 우선순위를 가집니다. 그러나 삭제 및 삽입 조회에 대한 배치 업데이트 동작은
부분 업데이트에 의해 영향을 받지 않으며 변경되지 않은 상태로 유지됩니다. 배치 업데이트를 부분 업데이트의
우선순위로 대체하려면 다음을 수행하십시오.
- server.xml 파일을 여십시오.
- -Dcom.ibm.ws.pm.grouppartialupdate 특성 값을 true로
변경하십시오. 이 특성이 true로 설정되고 부분 업데이트가 선택되면 업데이트 조회의 배치 업데이트가
유사한 부분 조회를 그룹화합니다.
- SQLJ 또는 CMP/A에 대해서는 부분 업데이트가 지원되지 않습니다.