어셈블된 EJB 모듈에서 CMP(Container-Managed Persistence)의 순서 그룹 지정

CMP(Container Managed Persistence) Bean을 포함하는 EJB(Enterprise JavaBeans) 모듈을 어셈블한 후, 응용프로그램 실행 중에 특정 유형의 데이터베이스 관련 예외가 발생하지 않도록 할 수 있습니다. 순서 그룹 지정을 사용하여, 엔티티 Bean이 관계형 데이터베이스 테이블을 업데이트하는 순서를 지정할 수 있습니다.

메모: EJB에서는 엔터티 Bean이 지원되지 않습니다. 3.x 모듈.

RI(참조 무결성) 위반으로 인한 예외 제거

순서 그룹 지정은 특히 데이터베이스 RI(참조 무결성) 위반을 예방하는 데 유용합니다. 데이터베이스 RI 정책은 관계의 일관성을 유지하기 위해 데이터베이스 테이블에 데이터를 저장 및 삭제하는 규칙에 대해 설명합니다. 그러나 Bean 지속을 관리하기 위한 런타임 요구사항으로 인해 EJB 애플리케이션이 RI 규칙을 위반하여 결과적으로 데이터베이스 예외가 발생할 수 있습니다. 이러한 런타임 요구사항의 내용은 다음과 같습니다.
  • 엔티티 Bean 작성 및 제거 조작은 메소드 호출과 동시에 즉시 데이터베이스와 연관됩니다.
  • 엔티티 Bean 변경사항은 finder 메소드가 호출되거나 트랜잭션이 종료될 때까지 EJB 컨테이너에 의해 캐시됩니다.
결과적으로 엔티티 Bean이 데이터베이스를 업데이트하는 순서는 예측할 수 없습니다. 이러한 무작위성으로 인해 애플리케이션이 데이터베이스 RI를 위반할 위험이 커지게 됩니다. 일괄처리를 위한 조작을 캐시함으로써 이러한 런타임 요구사항을 무시할 수는 있지만 해당 RI 정책을 따르는 Bean 지속 순서까지 보장되는 것은 아닙니다.

데이터베이스 RI를 따르는 지속 순서를 보장하는 유일한 방법은 사용자가 어셈블리 도구의 EJB 배치 디스크립터 편집기에서 수행하는 순서를 지정하는 것입니다. 순서 그룹 지정 기능을 사용하면 CMP 그룹에 Bean을 지정할 수 있습니다. 각 그룹에서 지속 관리자가 Bean 데이터를 삽입하는 순서를 지정하여 UI를 위반하지 않고 데이터베이스 업데이트를 수행할 수 있습니다.

참조 CMP 시퀀스 그룹의 런타임 설정 시퀀스 그룹 지정에 대한 자세한 지침은 항목을 참조하세요. 동기화해야 하는 RI 정책에 대해서는 데이터베이스 관리자에게 문의하십시오.

최적의 동시성 제어 설계를 위한 예외 위험 최소화

순서 그룹을 지정하면 최적의 동시성 제어를 위해 구성된 엔티티 Bean에 대한 트랜잭션 롤백 예외의 위험도 줄일 수 있습니다. 이러한 동시성 제어 설계에서는 데이터베이스가 최소 시간 동안 잠겨 있어 최대 트랜잭션이 데이터에 대한 일관적인 액세스 권한을 갖게 됩니다. 데이터 소스가 상대적으로 제한되지 않은 상태를 유지하게 되면 다음과 같은 두 가지 일반적인 이유로 인해 트랜잭션 롤백 예외가 발생할 수 있습니다.
  • 동시에 여러 트랜잭션이 동일한 테이블 행을 잠그려고 시도하면 데이터베이스 교착 상태가 발생합니다.
  • 애플리케이션 논리를 위반하는 순서로 트랜잭션이 발생할 수 있습니다.

이러한 시나리오가 발생하지 않도록 하려면 순서 그룹 지정 기능을 사용하여 Bean 지속을 정렬하십시오.