La trasformazione da UML a EJB trasforma una classe contrassegnata con lo stereotipo <<Entity>> in un bean di entità CMP 2.x, CMP 1.1 oppure BMP con un nome bean uguale al nome della classe UML di origine. Il tipo del bean di entità generato corrisponde all'opzione selezionata dall'utente nella finestra di configurazione della trasformazione EJB, nella scheda Entità.
La trasformazione genera sempre le seguenti classi Java per i bean di entità:
La trasformazione genera le seguenti classi Java quando, nella scheda Entità, si fa clic su Solo interfacce remote:
La trasformazione genera le seguenti classi Java quando, nella scheda Entità, si fa clic su Solo interfacce locali:
La trasformazione genera le seguenti classi Java quando, nella scheda Entità, si fa clic su Interfacce locali e remote:
La trasformazione genera tutte le classi nella cartella del pacchetto generata per il pacchetto principale della classe UML di origine. Se si crea un modello UML senza pacchetti, la trasformazione genera un pacchetto predefinito denominato ejbs.
La trasformazione genera i file di classe bean e di classe chiave nella struttura ad albero di origine del progetto EJB di destinazione.
La trasformazione genera i quattro file di interfaccia nella struttura ad albero di origine del progetto client del progetto EJB di destinazione. Se non esiste alcun progetto client, la trasformazione genera i file di interfaccia nel progetto EJB di destinazione.
La trasformazione aggiunge i dati che definiscono il bean di entità per il descrittore di distribuzione (ejb-jar.xml).
Se la classe UML di origine per il bean di entità ha una relazione di generalizzazione (come ad esempio una relazione extends) con un'altra classe UML con lo stereotipo <<Entity>>, il bean di entità rappresentato dalla classe diventa la superclasse EJB per il bean di entità da generare.
Entrambi i bean di entità devono essere dello stesso tipo. Pertanto, entrambi i bean di entità devono essere CMP 2.x, CMP 1.1 oppure BMP. Ad esempio, se il bean di livello superiore è un bean di entità CMP 2.x, tutti i bean secondari devono essere dei bean di entità CMP 2.x. Se il bean di livello superiore non è dello stesso tipo del bean secondario previsto, la trasformazione genera il bean secondario senza una relazione di generalizzazione.
Se la classe UML di origine per il bean di entità ha delle relazioni di realizzazione (come ad esempio delle relazioni implements) con gli elementi di interfaccia, le interfacce rappresentate dalle interfacce di origine vengono implementate dalle quattro interfacce (remota, home, locale, home locale).
La trasformazione trasforma gli attributi nella classe UML di origine in campi CMP nel bean di entità con le proprietà elencate nella seguente tabella:
Proprietà campo CMP 2.x |
Valore campo CMP |
Nome |
Nome attributo UML |
Tipo |
Tipo determinato dal tipo di attributo (consultare la tabella relativa all'associazione dei tipi). |
Campo chiave |
False |
Genera il campo nella classe di implementazione del bean |
False |
Genera getter e setter |
True |
Promuove getter e setter alle interfacce locali |
True (se l'interfaccia locale esiste) |
Promuove getter e setter alle interfacce remote |
True (se l'interfaccia remota esiste) |
IsArray |
True se l'attributo UML ha un valore superiore finito |
Se il tipo di attributo è quello di un altro bean di entità CMP 2.x, la trasformazione non trasforma l'attributo in un campo CMP ma presume che l'attributo sia parte di un'associazione che deve essere trasformata in una relazione EJB. Tuttavia, se il tipo di attributo è quello di un altro bean enterprise che non è un bean di entità CMP 2.x, la trasformazione non trasforma l'attributo in un'associazione o un campo CMP. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
La trasformazione trasforma gli attributi nella classe UML di origine in campi CMP nel bean di entità con le proprietà elencate nella seguente tabella:
Proprietà campo CMP 1.1 |
Valore campo CMP |
Nome |
Nome attributo UML |
Tipo |
Tipo determinato dal tipo di attributo (consultare la tabella relativa all'associazione dei tipi). |
Campo chiave |
False |
Genera il campo nella classe di implementazione del bean |
False |
Genera getter e setter |
True |
Promuove getter e setter alle interfacce locali |
False |
Promuove getter e setter alle interfacce remote |
True (sempre) |
IsArray |
True se l'attributo UML ha un valore superiore finito |
Se il tipo di attributo è quello di un altro bean di entità o bean enterprise, la trasformazione non trasforma l'attributo in un'associazione o un campo CMP. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
La trasformazione trasforma gli attributi nella classe UML di origine in campi BMP nel bean di entità con le proprietà elencate nella seguente tabella:
Proprietà campo BMP |
Valore campo BMP |
Nome |
Nome attributo UML |
Tipo |
Tipo determinato dal tipo di attributo (consultare la tabella relativa all'associazione dei tipi). |
Campo chiave |
False |
Genera il campo nella classe di implementazione del bean |
True |
Genera getter e setter |
True |
Promuove getter e setter alle interfacce locali |
True (se l'interfaccia locale esiste) |
Promuove getter e setter alle interfacce remote |
True (se l'interfaccia remota esiste) |
IsArray |
True se l'attributo UML ha un valore superiore finito |
Se il tipo di attributo è quello di un altro bean di entità o EJB, la trasformazione non trasforma l'attributo in un'associazione o un campo BMP. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
La trasformazione trasforma anche gli attributi sulla classe UML di origine contrassegnati con l'attributo <<Id>> in campi CMP, ma con dei valori di proprietà differenti, come elencato nella seguente tabella. Questi campi CMP consentono la formazione della chiave principale.
Proprietà campo CMP 2.x e CMP 1.1 |
Valore campo CMP |
Nome |
Nome attributo UML |
Tipo |
Tipo determinato dal tipo di attributo (consultare la tabella relativa all'associazione dei tipi). |
Campo chiave |
True |
Genera il campo nella classe di implementazione del bean |
False |
Genera getter e setter |
True |
Promuove getter e setter alle interfacce locali |
False |
Promuove getter e setter alle interfacce remote |
False |
IsArray |
True se l'attributo UML ha un valore superiore finito |
Se il tipo di attributo è quello di un altro bean di entità o bean enterprise, la trasformazione non trasforma l'attributo in un'associazione o un campo chiave CMP. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
La trasformazione trasforma anche gli attributi sulla classe UML di origine contrassegnati con l'<<Id>> in campi BMP, ma con dei valori di proprietà differenti, come elencato nella seguente tabella. Questi campi BMP consentono la formazione della chiave principale.
Proprietà campo BMP |
Valore campo BMP |
Nome |
Nome attributo UML |
Tipo |
Tipo determinato dal tipo di attributo (consultare la tabella relativa all'associazione dei tipi). |
Campo chiave |
True |
Genera il campo nella classe di implementazione del bean |
True |
Genera getter e setter |
True |
Promuove getter e setter alle interfacce locali |
False |
Promuove getter e setter alle interfacce remote |
False |
IsArray |
True se l'attributo UML ha un valore superiore finito |
Se il tipo di attributo è quello di un altro bean di entità o bean enterprise, la trasformazione non trasforma l'attributo in un'associazione o un campo chiave BMP. La trasformazione scrive invece un messaggio nel file di log che indica che l'attributo di origine non verrà trasformato.
Come illustrato dalla seguente tabella, la trasformazione genera i campi CMP e BMP con i tipi basati sul tipo dell'attributo di origine:
Tipo attributo UML |
Tipo campo CMP/BMP |
boolean |
boolean |
byte |
byte |
char |
char |
float |
float |
int |
int |
lungo |
lungo |
breve |
breve |
Booleano |
java.lang.Boolean |
Byte |
java.lang.Byte |
Char |
java.lang.Char |
Float |
java.lang.Float |
Intero |
java.lang.Integer |
Lungo |
java.lang.Long |
Breve |
java.lang.Short |
Stringa |
java.lang.String |
altro |
Nome completo |
La trasformazione trasforma le operazioni non contrassegnate nella classe UML di origine in metodi aziendali nel bean entità. Inizialmente, l'operazione viene trasformata in modo analogo ad un'operazione su una classe UML non contrassegnata. L'operazione trasformata viene aggiunta alle classi elencate nella seguente tabella, con qualche modifica.
Classe |
Modifiche metodo |
Classe bean |
Nessuna modifica |
Interfaccia locale |
Metodo interfaccia |
Interfaccia remota |
Metodo interfaccia, genera java.rmi.RemoteException |
La trasformazione trasforma le operazioni di <<Query>> nella classe UML di origine in una dei due tipi di metodi query: metodo finder e metodo select. I metodi select esistono solo nei bean di entità CMP 2.x.
La trasformazione genera i metodi finder nelle classi elencate nella seguente tabella, con qualche modifica:
Classe |
Modifiche metodo |
Interfaccia home locale (se le interfacce locali esistono) |
|
Interfaccia home remota (se le interfacce remote esistono) |
|
Nome operazione UML |
Nome metodo finder |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Tipo di restituzione transform parsed Java |
Tipo di restituzione metodo finder |
Raccolta |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<nome classe origine>[] |
java.util.Collection |
<nome classe origine> OPPURE “nullo" |
|
<nome tipo definito dall'utente>[] |
java.util.Collection |
<nome classe non di origine (ad esempio, String, Integer e così via)>[] |
java.util.Collection |
<nome tipo definito dall'utente> |
Generare un metodo select invece di un metodo finder |
<non classe non di origine (ad esempio, String, Integer e così via)> |
Generare un metodo select invece di un metodo finder |
La trasformazione EJB crea un'attività che indica che occorre aggiungere manualmente una query al descrittore di distribuzione per ciascun metodo finder generato.
La trasformazione trasforma un'operazione query in un metodo select se la visibilità sull'operazione è privata oppure se il tipo di restituzione è diverso dal nome della classe UML di origine ed il tipo del bean di entità è CMP 2.x.
Visibilità operazione |
Tipo di restituzione |
Tipo metodo |
Privato |
Uguale al nome della classe di origine |
Seleziona metodo |
Nessun privato |
Uguale al nome della classe di origine |
Metodo utilità di ricerca |
Privato |
Non il nome della classe di origine |
Seleziona metodo |
Nessun privato |
Non il nome della classe di origine |
Seleziona metodo |
La trasformazione genera i metodi select nella classe bean, con le seguenti modifiche:
Nome operazione UML |
Nome metodo Select |
xxx |
ejbSelectXxx |
selectXxx |
ejbSelectXxx |
SelectXxx |
ejbSelectXxx |
ejbSelectXxx |
ejbSelectXxx |
Tipo di restituzione transform parsed Java |
Tipo di restituzione metodo select |
Raccolta |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<nome classe origine>[] |
java.util.Collection |
<nome classe origine> OPPURE “nullo" |
Nome interfaccia locale |
<nome tipo definito dall'utente>[] |
java.util.Collection |
<nome classe non di origine (ad esempio, String, Integer e così via)>[] |
java.util.Collection |
<nome tipo definito dall'utente> |
Nome tipo definito dall'utente |
<non classe non di origine (ad esempio, String, Integer e così via)> |
Nome classe non di origine |
La trasformazione EJB crea un'attività che indica che occorre aggiungere manualmente una query al descrittore di distribuzione per ciascun metodo select generato.
La trasformazione trasforma le operazioni <<Query>> sulla classe UML di origine in uno tipo di metodo query: i metodi finder. I bean di entità CMP 1.1 non supportano i metodi select, poiché essi sono disponibili solo per i bean di entità CMP 2.x. Pertanto, indipendentemente dal tipo di restituzione e dalla visibilità dell'operazione <<Query>>, la trasformazione genera sempre un metodo finder nell'interfaccia home remota del bean di entità.
Come illustrato dalla seguente tabella, la trasformazione genera sempre metodi finder nell'interfaccia home remota, con qualche modifica:
Classe |
Modifiche metodo |
Interfaccia home remota |
|
Nome operazione UML |
Nome metodo finder |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Tipo di restituzione transform parsed Java |
Tipo di restituzione metodo finder |
Raccolta |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<nome classe origine>[] |
java.util.Collection |
<nome classe origine> OPPURE “nullo" |
Nome interfaccia remota |
<nome tipo definito dall'utente>[] |
java.util.Collection |
<nome classe non di origine (ad esempio String, Integer e così via)>[] |
java.util.Collection |
<nome tipo definito dall'utente> |
Nome interfaccia remota |
<non classe non di origine (ad esempio, String, Integer e così via)> |
Nome interfaccia remota |
La trasformazione EJB crea un'attività che indica che occorre aggiungere manualmente una query al descrittore di distribuzione per ciascun metodo finder generato.
La trasformazione trasforma le operazioni <<Query>> sulla classe UML di origine in uno tipo di metodo query: i metodi finder. I bean di entità BMP di qualsiasi versione non supportano i metodi select poiché sono disponibili solo per i bean di entità CMP 2.x. Pertanto, indipendentemente dal tipo di restituzione e dalla visibilità dell'operazione <<Query>>, la trasformazione genera sempre un metodo finder nella classe di implementazione del bean. La trasformazione genera quindi i metodi finder nelle interfacce esistenti del bean di entità.
Come illustrato dalla seguente tabella, la trasformazione genera i metodi finder nelle seguenti classi, con qualche modifica:
Classe |
Modifiche metodo |
Interfaccia home locale |
|
Interfaccia home remota (se le interfacce remote esistono) |
|
Classe di implementazione del bean |
|
Nome operazione UML |
Nome metodo finder |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
ejbFindXxx |
findEjbFindXxx |
EjbFindXxx |
findEjbFindXxx |
Nome operazione UML |
Nome metodo finder |
xxx |
ejbFindXxx |
findXxx |
ejbFindXxx |
FindXxx |
ejbFindXxx |
ejbFindXxx |
ejbFindEjbFindXxx |
EjbFindXxx |
ejbFindEjbFindXxx |
Tipo di restituzione transform parsed Java |
Tipo di restituzione metodo finder |
Raccolta |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<nome classe origine>[] |
java.util.Collection |
<nome classe origine> OPPURE “nullo" |
|
<nome tipo definito dall'utente>[] |
java.util.Collection |
<nome classe non di origine (ad esempio, String, Integer e così via)>[] |
java.util.Collection |
<nome tipo definito dall'utente> |
|
<non classe non di origine (ad esempio, String, Integer e così via)> |
|
Tipo di restituzione transform parsed Java |
Tipo di restituzione metodo finder |
Raccolta |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<nome classe>[] |
java.util.Collection |
<nome classe> O “nullo” |
Nome classe chiave |
Ignorato.
Ignorato.
Termini di
utilizzo | Feedback
(C) Copyright IBM Corporation 2004. Tutti i diritti riservati.