EJBDEPLOY 관계 문제점 해결 팁
이 정보를 사용하여 EJBDEPLOY 정보 문제점을 해결할 수 있습니다.
![[z/OS]](../images/ngzos.gif)
DB2 for z/OS 버전 7.x
EJBDeploy가
DB2 for
z/OS 버전 7.x에서 데이터 관계를 작성할 때 문제점이 있을 수 있습니다. EJBDeploy는 EJB의 서로 관련된
두 개의 기본 키 복합이 포함된 테이블을 작성합니다. 복합 키가
254자를 초과하는 경우 DB2 for z/OS V7.x는 이 관계를 승인하지 않으며 다음 오류가 발생할 수 있습니다.
DSNT408I SQLCODE = -613, ERROR: THE PRIMARY KEY OR A UNIQUE CONSTRAINT IS TOO LONG OR HAS TOO MANY COLUMNS DSNT418I SQLSTATE = 54008 SQLSTATE RETURN CODE이 문제점은 두 개의 관련 Bean에 대해 작성된 1차 키에 문자열 1차 키가 있는 경우 발생할 수 있습니다. 이 경우, 총계 500에 대한 두 개의 varchar(250) 1차 키로 구성되는 복합 키가 작성되며 이 키는 DB2 for z/OS 버전 7.x의 254 최대값보다 큽니다.
하향식 맵핑을 활용하여 이 문제점이
발생하지 않도록 하는 데 고려해야 할 사항:
- 하향식 맵핑은 가이드 라인이며 DBA와 상의해야 합니다.
- EJBDeploy에 의해 하향식으로 작성되는 스키마는 테스트 및 필요한 실제 스키마에 대한 가이드라인용으로만 설계됩니다. meet-in-the-middle 맵핑의 사용에서는 이 문제점이 발생하지 않습니다.
- 최대 키 길이가 2K인 DB2 V8을 사용할 경우 복합 키 제한조건 문제점이 발생하지 않습니다.
EJBDEPLOY_JVM_ARGS:
EJBDEPLOY_JVM_ARGS 특성을 설정하여, EJB를 배치하는 코드(ejbdeploy.sh)로 전달되는 JVM(Java Virtual Machine) 옵션을 대체하십시오. 이 특성은 deploymentmanager/bin/setupCmdLine.sh 또는 appServerHome/bin/setupCmdLine.sh에 설정하십시오.
예를 들어, 다음은 규정되지 않은 SQL이 생성되어야 함을 지정합니다.
export EJBDEPLOY_JVM_ARGS="-DEJBDEPLOY_GENERATE_UNQUALIFIED_SQL=true"
1차 키에 정의된 변환기는 외부 키 값에서 호출되지 않습니다.
데이터베이스 열에 1차 키 필드의 맵핑은 변환기를 사용하여 키 값을 변환할 수 있습니다. CMP(container-managed persistence) Bean이 변환기를 사용하여 1차 키를 맵핑하고 Bean에 다른 끝의 Bean이 외부 키를 보유하는 관계가 있는 경우 외부 키에 대한 맵핑은 변환기를 사용하지 않습니다.
1차 키에 정의된
변환기가 외부 키 값에서 호출되지 않았음을 표시하는 오류가 발생할 수 있습니다.
ejbDeploy 명령 실행 중에 다음 메시지를 수신합니다.
No type mapping defined for Java datatype1 to Database datatype2런타임 중에 애플리케이션은 관계의 다른 끝에서 CMP Bean을 찾지 못합니다.
이 제한사항을 극복하려면 데이터베이스 테이블에 자체 외부 키를 정의하고 관계의 다른 끝에 있는 엔터프라이즈 Bean의 1차 키에 정의된 것과 동일한 변환기를 사용하는 맵핑을 작성하십시오.