EJB 관계

EJB 도구에서 EJB 배치 디스크립터 편집기를 사용하면 선택적으로 여러 엔터프라이즈 Bean들의 관계를 정의할 수 있습니다.
중요사항: EJB 1.x 관계는 WebSphere® 확장기능이며 EJB 2.x 관계는 EJB 2.x 배치 디스크립터의 일부분입니다. 두 관계 레벨에 대해 다른 위치에서 다른 마법사를 여십시오.

관계에는 세 가지 기본 유형이 있습니다.

일대일(1:1) 관계에서는 CMP 엔티티 Bean이 다른 CMP 엔티티 Bean의 단일 인스턴스와 연관되어 있습니다. 예를 들어, 하나의 Employee Bean이 EmployeeID Bean의 단일 인스턴스에만 연관될 수 있습니다. 한 직원은 파일에서 하나의 직원 ID만 가질 수 있습니다.

일대다(1:M) 관계에서는 CMP 엔티티 Bean이 다른 CMP 엔티티 Bean의 여러 인스턴스와 연관되어 있습니다. 예를 들어, Department Bean이 Employee Bean의 여러 인스턴스와 연관될 수 있습니다. 대부분의 부서는 여러 직원으로 구성되어 있습니다.

다대다(M:M) 관계에서는 CMP 엔티티 Bean의 여러 인스턴스가 다른 CMP 엔티티 Bean의 여러 인스턴스와 연관되어 있습니다. 예를 들어, Customer Bean의 여러 인스턴스가 Restaurant Bean의 여러 인스턴스와 연관될 수 있습니다. 음식점은 여러 손님에게 서비스를 제공하고 손님은 여러 음식점의 단골입니다. EJB 1.1 CMP 엔티티 Bean의 경우 다대다 관계에서는 링크 Bean을 사용해야 합니다. 이 링크 Bean은 각 Bean에서 링크 Bean으로 1:M 관계를 작성하여 두 엔터프라이즈 Bean의 중간에 위치합니다. EJB 2.0 CMP Bean의 경우 하향식 맵핑 실행 중 링크 테이블의 작성을 자동으로 처리하므로 링크 Bean을 작성할 필요가 없습니다.

관계 정의의 일부분으로 각 Bean에 다른 Bean에 관한 역할을 지정하고 이 역할에 이름을 부여하십시오. 예를 들어, Employee와 EmployeeID의 관계를 작성한다고 가정하십시오. Employee Bean에서 EmployeeID의 역할은 id 또는 employeeID와 같이 중요합니다. EmployeeID Bean에서 Employee의 역할은 employee 또는 owner일 수 있습니다. 이러한 이름은 생성된 코드에서 메소드 이름을 파생시키는 데 사용되며 엔터프라이즈 Bean의 원격 인터페이스 일부분이 됩니다.

EJB 2.x 관계의 경우 cmr 필드 요소를 사용하여 메소드를 생성합니다.

CMP 필드 및 관계가 데이터베이스 테이블에 맵핑되면 외부 키를 사용하여 데이터베이스 테이블에서 이러한 관계를 표시합니다. 그런 다음 엔터프라이즈 Bean의 키에 관계 역할을 추가하여 키 클래스의 관계 파트에 외부 키를 표시할 수 있습니다.

Bean의 키에 역할을 추가하려면 다중성이 한 자리여야 하고 필수 값이어야 합니다(예: 1..1). 또한 역할의 소유 Bean에서 외부 키 선택란이 선택되어 있어야 합니다. 필수 여부를 테스트하는 하한이 없으므로 다중성이 1이라는 점을 제외하고 EJB 2.x CMP 엔티티 Bean의 규칙은 동일합니다. 외부 키 선택란을 사용하여 외부 키 열이 있어야 하는 CMP 엔티티 Bean의 맵핑 테이블을 지정합니다. CMP 엔티티 Bean은 역할의 소스 엔터프라이즈 Bean입니다.

위의 예제에서 다중성이 1..1이면 employeeID 역할은 Employee 키의 일부분이 되며 Employee에서 외부 키 선택란이 선택되어 있습니다. 또한 역할을 필수로 표시하면(예: 1..x) 홈 인터페이스의 작성 메소드에 역할의 유형이 매개변수로 추가됩니다. 탐색 가능한 선택란이 선택된 경우 EJB 2.x 관계에서 cmr 필드는 필수입니다. 로컬 클라이언트 보기가 있는 CMP에 대해 탐색 가능으로만 선택할 수 있습니다. CMP 엔티티 Bean의 동일한 EJB 버전에 대해서만 관계를 정의할 수 있습니다. EJB 1.x CMP 엔티티 Bean과 EJB 2.x CMP 엔티티 Bean의 관계를 작성할 수 없습니다.

EJB 2.x 관계 작성 마법사는 관계에 대한 UML 보기와 스펙 보기를 표시합니다. 스펙 보기에 설명된 다중성은 EJB 스펙의 규칙에 해당합니다. 역할의 다중성은 관계와 관련되어 있으므로 UML 보기와 반대이며 UML 보기에서는 소스 엔터프라이즈 Bean과 관련되어 있습니다.


피드백