UML에서 EJB로 변환 시 <<Entity>> 스테레오타입으로 표시되는 클래스가 Bean 이름이 소스 UML 클래스의 이름과 동일한 CMP 2.x, CMP 1.1 또는 BMP 엔티티 Bean으로 변환됩니다. 생성된 엔티티 Bean의 유형은 EJB 변환 구성 창의 엔티티 탭에서 사용자가 선택하는 옵션에 해당됩니다.
변환 시 항상 엔티티 Bean에 대해 다음 Java 클래스가 생성됩니다.
변환 시 엔티티 탭에서 원격 인터페이스 전용을 누를 경우 다음 Java 클래스가 생성됩니다.
변환 시 엔티티 탭에서 로컬 인터페이스 전용을 누를 경우 다음 Java 클래스가 생성됩니다.
변환 시 엔티티 탭에서 로컬 및 원격 인터페이스를 누를 경우 다음 Java 클래스가 생성됩니다.
변환 시 소스 UML 클래스의 상위 패키지에 대해 생성되는 패키지 폴더에 모든 클래스가 생성됩니다. 패키지 없이 UML 모델을 작성할 경우, 변환 시 ejbs라고 하는 기본 패키지가 생성됩니다.
변환 시 대상 EJB 프로젝트의 소스 트리에 Bean 클래스 및 키 클래스 파일을 생성합니다.
변환 시 대상 EJB 프로젝트의 클라이언트 프로젝트 소스 트리에 네 개의 인터페이스 파일이 생성됩니다. 클라이언트 프로젝트가 없는 경우, 변환 시 대상 EJB 프로젝트에 인터페이스 파일이 생성됩니다.
변환 시 엔티티 Bean을 정의하는 데이터가 배치 설명자(ejb-jar.xml)에 추가됩니다.
엔티티 Bean의 소스 UML 클래스가 <<Entity>> 스테레오타입의 다른 UML 클래스에 대해 일반화 관계(예: 확장 관계)를 가지고 있는 경우, 클래스가 나타내는 엔티티 Bean은 생성될 엔티티 Bean의 EJB 수퍼클래스가 됩니다.
두 엔티티 Bean 모두 동일 유형이어야 합니다. 따라서 두 엔티티 Bean은 모두 CMP 2.x, CMP 1.1 또는 BMP여야 합니다. 예를 들어, 수퍼 Bean이 CMP 2.x 엔티티 Bean이면 모든 하위 Bean은 CMP 2.x 엔티티 Bean이어야 합니다. 수퍼 Bean이 예상한 하위 Bean의 유형과 같지 않으면 변환 시 일반화 관계 없이 하위 Bean이 생성됩니다.
엔티티 Bean의 소스 UML 클래스에 인터페이스 요소와의 실현(Realization) 관계(예: 구현(implements) 관계)가 있는 경우, 소스 인터페이스가 나타내는 인터페이스는 네 개의 인터페이스(원격, 홈, 로컬, 로컬 홈)로 구현(implement)됩니다.
변환 시 소스 UML 클래스의 속성이 다음 표에 나열된 특성을 갖는 엔티티 Bean의 CMP 필드로 변환됩니다.
CMP 2.x 필드 특성 |
CMP 필드 값 |
이름 |
UML 속성 이름 |
유형 |
속성 유형에서 판별한 유형(“유형 맵” 표 참조) |
키 필드 |
False |
Bean 구현(implementation) 클래스에서 필드 생성 |
False |
getter 및 setter 생성 |
True |
getter 및 setter를 로컬 인터페이스로 승격 |
True(로컬 인터페이스가 존재할 경우) |
getter 및 setter를 원격 인터페이스로 승격 |
True(원격 인터페이스가 존재할 경우) |
IsArray |
UML 속성이 유한 상위 값을 갖는 경우 True |
속성 유형이 다른 CMP 2.x 엔티티 Bean의 속성 유형인 경우, 변환 시 속성이 CMP 필드로 변환되지 않지만 속성이 EJB 관계로 변환되어야 하는 연관의 일부로 간주됩니다. 그러나 속성 유형이 CMP 2.x 엔티티 Bean이 아닌 다른 엔터프라이즈 Bean의 유형일 경우, 변환 시 속성이 CMP 필드나 연관으로 변환되지 않습니다. 대신, 변환 시 소스 속성이 변환되지 않음을 알리는 메시지가 로그 파일에 기록됩니다.
변환 시 소스 UML 클래스의 속성이 다음 표에 나열된 특성을 갖는 엔티티 Bean의 CMP 필드로 변환됩니다.
CMP 1.1 필드 특성 |
CMP 필드 값 |
이름 |
UML 속성 이름 |
유형 |
속성 유형에서 판별한 유형(“유형 맵” 표 참조) |
키 필드 |
False |
Bean 구현(implementation) 클래스에서 필드 생성 |
False |
getter 및 setter 생성 |
True |
getter 및 setter를 로컬 인터페이스로 승격 |
False |
getter 및 setter를 원격 인터페이스로 승격 |
True(항상) |
IsArray |
UML 속성이 유한 상위 값을 갖는 경우 True |
속성 유형이 다른 엔티티 Bean 또는 엔터프라이즈 Bean의 속성 유형인 경우, 변환 시 속성이 CMP 필드나 연관으로 변환되지 않습니다. 대신, 변환 시 소스 속성이 변환되지 않음을 알리는 메시지가 로그 파일에 기록됩니다.
변환 시 소스 UML 클래스의 속성이 다음 표에 나열된 특성을 갖는 엔티티 Bean의 BMP 필드로 변환됩니다.
BMP 필드 특성 |
BMP 필드 값 |
이름 |
UML 속성 이름 |
유형 |
속성 유형에서 판별한 유형(“유형 맵” 표 참조) |
키 필드 |
False |
Bean 구현(implementation) 클래스에서 필드 생성 |
True |
getter 및 setter 생성 |
True |
getter 및 setter를 로컬 인터페이스로 승격 |
True(로컬 인터페이스가 존재할 경우) |
getter 및 setter를 원격 인터페이스로 승격 |
True(원격 인터페이스가 존재할 경우) |
IsArray |
UML 속성이 유한 상위 값을 갖는 경우 True |
속성 유형이 다른 엔티티 Bean 또는 EJB의 속성 유형인 경우, 변환 시 속성이 BMP 필드나 연관으로 변환되지 않습니다. 대신, 변환 시 소스 속성이 변환되지 않음을 알리는 메시지가 로그 파일에 기록됩니다.
변환 시 소스 UML 클래스에서 <<Id>> 속성으로 표시된 속성들이 CMP 필드로 변환되지만 다음 표에 나열된 것처럼 다른 특성 값을 갖습니다. 이 CMP 필드는 1차 키를 구성하는 데 도움이 됩니다.
CMP 2.x 및 CMP 1.1 필드 특성 |
CMP 필드 값 |
이름 |
UML 속성 이름 |
유형 |
속성 유형에서 판별한 유형(“유형 맵” 표 참조) |
키 필드 |
True |
Bean 구현(implementation) 클래스에서 필드 생성 |
False |
getter 및 setter 생성 |
True |
getter 및 setter를 로컬 인터페이스로 승격 |
False |
getter 및 setter를 원격 인터페이스로 승격 |
False |
IsArray |
UML 속성이 유한 상위 값을 갖는 경우 True |
속성 유형이 다른 엔티티 Bean 또는 엔터프라이즈 Bean의 속성 유형인 경우, 변환 시 속성이 CMP 키 필드나 연관으로 변환되지 않습니다. 대신, 변환 시 소스 속성이 변환되지 않음을 알리는 메시지가 로그 파일에 기록됩니다.
변환 시 소스 UML 클래스에서 <<Id>>로 표시된 속성들이 BMP 필드로 변환되지만 다음 표에 나열된 것처럼 다른 특성 값을 갖습니다. 이 BMP 필드는 1차 키를 구성하는 데 도움이 됩니다.
BMP 필드 특성 |
BMP 필드 값 |
이름 |
UML 속성 이름 |
유형 |
속성 유형에서 판별한 유형(“유형 맵” 표 참조) |
키 필드 |
True |
Bean 구현(implementation) 클래스에서 필드 생성 |
True |
getter 및 setter 생성 |
True |
getter 및 setter를 로컬 인터페이스로 승격 |
False |
getter 및 setter를 원격 인터페이스로 승격 |
False |
IsArray |
UML 속성이 유한 상위 값을 갖는 경우 True |
속성 유형이 다른 엔티티 Bean 또는 엔터프라이즈 Bean의 속성 유형인 경우, 변환 시 속성이 BMP 키 필드나 연관으로 변환되지 않습니다. 대신, 변환 시 소스 속성이 변환되지 않음을 알리는 메시지가 로그 파일에 기록됩니다.
다음 표에 나와 있는 것처럼, 변환 시 소스 속성 유형을 기초로 하는 유형을 가지고 있는 CMP 및 BMP 필드가 생성됩니다.
UML 속성 유형 |
CMP/BMP 필드 유형 |
boolean |
boolean |
byte |
byte |
char |
char |
float |
float |
int |
int |
long |
long |
short |
short |
Boolean |
java.lang.Boolean |
Byte |
java.lang.Byte |
Char |
java.lang.Char |
Float |
java.lang.Float |
Integer |
java.lang.Integer |
Long |
java.lang.Long |
Short |
java.lang.Short |
String |
java.lang.String |
기타 |
완전한 이름 |
변환 시 소스 UML에 대한 표시되지 않은 오퍼레이션이 엔티티 Bean의 비즈니스 메소드로 변환됩니다. 초기에 오퍼레이션은 표시되지 않은 UML 클래스에서의 오퍼레이션과 같은 방식으로 변환됩니다. 변환된 오퍼레이션은 약간의 수정과 함께 다음 표에 나열된 클래스에 추가됩니다.
클래스 |
메소드 수정사항 |
Bean 클래스 |
변경사항 없음 |
로컬 인터페이스 |
인터페이스 메소드 |
원격 인터페이스 |
java.rmi.RemoteException이 발생하는 인터페이스 메소드 |
변환 시 소스 UML 클래스에 대한 <<Query>> 오퍼레이션이 두 가지 유형의 조회 메소드(찾기 메소드 및 선택 메소드) 중 하나로 변환됩니다. 선택 메소드는 CMP 2.x 엔티티 Bean에만 존재합니다.
변환 시 약간의 수정과 함께 다음 표에 나열된 클래스에서 파인더 메소드가 생성됩니다.
클래스 |
메소드 수정사항 |
로컬 홈 인터페이스 (로컬 인터페이스가 존재할 경우) |
|
원격 홈 인터페이스 (원격 인터페이스가 존재할 경우) |
|
UML 오퍼레이션 이름 |
파인더 메소드 이름 |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Java 변환의 구문 분석된 리턴 유형 |
파인더 메소드 리턴 유형 |
Collection |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<소스 클래스 이름>[] |
java.util.Collection |
<소스 클래스 이름> 또는 “void” |
|
<사용자 정의 유형 이름>[] |
java.util.Collection |
<소스가 아닌 클래스 이름(예: String, Integer 등)>[] |
java.util.Collection |
<사용자 정의 유형 이름> |
파인더 메소드 대신 선택 메소드 생성 |
<소스가 아닌 클래스 이름(예: String, Integer 등)> |
파인더 메소드 대신 선택 메소드 생성 |
EJB 변환은 생성되는 파인더 메소드마다 배치 설명자에 조회를 수동으로 추가해야 함을 표시하는 타스크를 작성합니다.
변환 시 오퍼레이션에 대한 가시성이 개인용이거나 리턴 유형이 소스 UML 클래스의 이름과 다르고 엔티티 Bean 유형이 CMP 2.x인 경우 조회 오퍼레이션이 선택 메소드로 변환됩니다.
오퍼레이션 가시성 |
리턴 유형 |
메소드 유형 |
개인용 |
소스 클래스 이름과 동일 |
선택 메소드 |
개인용이 아님 |
소스 클래스 이름과 동일 |
찾기 메소드 |
개인용 |
소스 클래스 이름이 아님 |
선택 메소드 |
개인용이 아님 |
소스 클래스 이름이 아님 |
선택 메소드 |
변환 시 다음과 같이 수정되어 Bean 클래스에 선택 메소드가 생성됩니다.
UML 오퍼레이션 이름 |
선택 메소드 이름 |
xxx |
ejbSelectXxx |
selectXxx |
ejbSelectXxx |
SelectXxx |
ejbSelectXxx |
ejbSelectXxx |
ejbSelectXxx |
Java 변환의 구문 분석된 리턴 유형 |
선택 메소드 리턴 유형 |
Collection |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<소스 클래스 이름>[] |
java.util.Collection |
<소스 클래스 이름> 또는 “void” |
로컬 인터페이스 이름 |
<사용자 정의 유형 이름>[] |
java.util.Collection |
<소스가 아닌 클래스 이름(예: String, Integer 등)>[] |
java.util.Collection |
<사용자 정의 유형 이름> |
사용자 정의 유형 이름 |
<소스가 아닌 클래스 이름(예: String, Integer 등)> |
소스가 아닌 클래스 이름 |
EJB 변환은 생성되는 선택 메소드마다 배치 설명자에 조회를 수동으로 추가해야 함을 표시하는 타스크를 작성합니다.
변환 시 소스 UML 클래스에 대한 <<Query>> 오퍼레이션이 한 가지 유형의 조회 메소드(파인더 메소드) 중 하나로 변환됩니다. CMP 1.1 엔티티 Bean은 선택 메소드를 지원하지 않습니다. 이 엔티티 Bean은 CMP 2.x 엔티티 Bean에 대해서만 사용 가능합니다. 따라서 <<Query>> 오퍼레이션의 리턴 유형과 가시성에 관계없이 변환은 항상 엔티티 Bean의 원격 홈 인터페이스에서 파인더 메소드를 생성합니다.
다음 표에 나와 있는 것처럼, 변환 시 약간의 수정과 함께 항상 원격 홈 인터페이스에서 파인더 메소드가 생성됩니다.
클래스 |
메소드 수정사항 |
원격 홈 인터페이스 |
|
UML 오퍼레이션 이름 |
파인더 메소드 이름 |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Java 변환의 구문 분석된 리턴 유형 |
파인더 메소드 리턴 유형 |
Collection |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<소스 클래스 이름>[] |
java.util.Collection |
<소스 클래스 이름> 또는 “void” |
원격 인터페이스 이름 |
<사용자 정의 유형 이름>[] |
java.util.Collection |
<소스가 아닌 클래스 이름(예: String, Integer 등)>[] |
java.util.Collection |
<사용자 정의 유형 이름> |
원격 인터페이스 이름 |
<소스가 아닌 클래스 이름(예: String, Integer 등)> |
원격 인터페이스 이름 |
EJB 변환은 생성되는 파인더 메소드마다 배치 설명자에 조회를 수동으로 추가해야 함을 표시하는 타스크를 작성합니다.
변환 시 소스 UML 클래스에 대한 <<Query>> 오퍼레이션이 한 가지 유형의 조회 메소드(파인더 메소드) 중 하나로 변환됩니다. 모든 버전의 BMP 엔티티 Bean은 선택 메소드를 지원하지 않습니다. 이 엔티티 Bean은 CMP 2.x 엔티티 Bean에 대해서만 사용 가능합니다. 따라서 <<Query>> 오퍼레이션의 리턴 유형과 가시성에 관계없이 변환은 항상 Bean 구현(implementation) 클래스에서 파인더 메소드를 생성합니다. 그런 다음 엔티티 Bean의 기존 인터페이스에서 파인더 메소드를 생성합니다.
다음 표에 나와 있는 것처럼, 변환 시 약간의 수정과 함께 다음 클래스에서 파인더 메소드가 생성됩니다.
클래스 |
메소드 수정사항 |
로컬 홈 인터페이스 |
|
원격 홈 인터페이스 (원격 인터페이스가 존재할 경우) |
|
Bean 구현(implementation) 클래스 |
|
UML 오퍼레이션 이름 |
파인더 메소드 이름 |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
ejbFindXxx |
findEjbFindXxx |
EjbFindXxx |
findEjbFindXxx |
UML 오퍼레이션 이름 |
파인더 메소드 이름 |
xxx |
ejbFindXxx |
findXxx |
ejbFindXxx |
FindXxx |
ejbFindXxx |
ejbFindXxx |
ejbFindEjbFindXxx |
EjbFindXxx |
ejbFindEjbFindXxx |
Java 변환의 구문 분석된 리턴 유형 |
파인더 메소드 리턴 유형 |
Collection |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<소스 클래스 이름>[] |
java.util.Collection |
<소스 클래스 이름> 또는 “void” |
|
<사용자 정의 유형 이름>[] |
java.util.Collection |
<소스가 아닌 클래스 이름(예: String, Integer 등)>[] |
java.util.Collection |
<사용자 정의 유형 이름> |
|
<소스가 아닌 클래스 이름(예: String, Integer 등)> |
|
Java 변환의 구문 분석된 리턴 유형 |
파인더 메소드 리턴 유형 |
Collection |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<클래스 이름>[] |
java.util.Collection |
<클래스 이름> 또는 "void" |
키 클래스 이름 |
무시됩니다.
무시됩니다.