La transformation d'UML en EJB transforme une classe marquée avec le stéréotype <<Entity>> en un bean entity CMP 2.x, CMP 1.1 ou BMP dont le nom est égal à celui de la classe UML source. Le type du bean qui est généré correspond à l'option sélectionnée dans l'onglet Entity de la fenêtre de configuration des transformations EJB.
La transformation génère toujours les classes Java suivantes pour les beans entity :
La transformation génère les classes Java suivantes lorsque, dans l'onglet Entity, l'on clique sur Interfaces distantes uniquement :
La transformation génère les classes Java suivantes lorsque, dans l'onglet Entity, l'on clique sur Interfaces locales uniquement :
La transformation génère les classes Java suivantes lorsque, dans l'onglet Entity, l'on clique sur Interfaces locales et distantes :
La transformation génère toutes les classes dans le dossier du package qui est généré pour le package parent de la classe UML source. Si vous créez un modèle UML sans packages, la transformation génère un package par défaut du nom d'ejbs.
La transformation génère les fichiers de la classe bean et de la classe clé dans l’arbre source du projet EJB cible.
La transformation génère les quatre fichiers d'interfaces dans l’arbre source du projet client du projet EJB cible. Si aucun projet client n’existe, la transformation génère les fichiers d’interface dans le projet EJB cible.
La transformation ajoute au descripteur de déploiement (ejb-jar.xml) des données qui définissent le bean entity.
Si la classe UML source du bean entity est une généralisation (par exemple, une extension) d’une autre classe UML avec le stéréotype <<Entity>>, le bean entity représenté par la deuxième classe devient la superclasse EJB pour le bean entity à générer.
Les deux beans entity doivent être de même type. Ils doivent donc être tous les deux des CMP 2.x, des CMP 1.1 ou des BMP. Si, par exemple, le le superbean est un bean entity CMP 2.x, tous les beans enfants devront l'être aussi. Si le superbean n'est pas du même type que celui du bean enfant attendu, la transformation générera le bean enfant sans relation de généralisation.
Si la classe UML source du bean entity comporte une relation de réalisation (par exemple, implémentation) avec des éléments d’interface, les interfaces représentées par les interfaces sources sont implémentées par les quatre interfaces (distante, home, locale et home locale).
La transformation transforme les attributs de la classe source UML en champs CMP du bean entity avec les propriétés énumérées dans le tableau suivant :
Propriété du champ CMP 2.x |
Valeur du champ CMP |
Nom |
Nom d’attribut UML |
Type |
Type déterminé par le type de l'attribut (voir la table des correspondances de types). |
Champ clé |
Faux |
Générer le champ dans la classe d'implémentation du bean |
Faux |
Générer "getter" et "setter" |
Vrai |
Promouvoir "getter" et "setter" vers les interfaces locales |
Vrai (s'il existe des interfaces locales) |
Promouvoir "getter" et "setter" vers les interfaces distantes |
Vrai (s'il existe des interfaces distantes) |
IsArray |
Vrai si l’attribut UML a une valeur supérieure limitée |
Si le type d’attribut est celui d’un autre bean entity CMP 2.x, la transformation ne transforme pas l’attribut en champ CMP mais elle suppose qu’il fait partie d’une association qui doit être transformée en relation d’EJB. Mais si le type d’attribut est celui d’un autre bean enterprise qui n'est pas un bean entity CMP 2.x, la transformation ne transforme pas l’attribut en champ CMP ni en association. Elle écrira alors un message dans le journal pour indiquer que l'attribut source ne sera pas transformé.
La transformation transforme les attributs de la classe source UML en champs CMP du bean entity avec les propriétés énumérées dans le tableau suivant :
Propriétés du champ CMP 1.1 |
Valeur du champ CMP |
Nom |
Nom d’attribut UML |
Type |
Type déterminé par le type de l'attribut (voir la table des correspondances de types). |
Champ clé |
Faux |
Générer le champ dans la classe d'implémentation du bean |
Faux |
Générer "getter" et "setter" |
Vrai |
Promouvoir "getter" et "setter" vers les interfaces locales |
Faux |
Promouvoir "getter" et "setter" vers les interfaces distantes |
Vrai (toujours) |
IsArray |
Vrai si l’attribut UML a une valeur supérieure limitée |
Si le type d’attribut est celui d’un autre bean entity ou enterprise, la transformation ne transforme pas l’attribut en champ CMP ou en association. Elle écrira alors un message dans le journal pour indiquer que l'attribut source ne sera pas transformé.
La transformation transforme les attributs de la classe source UML en champs BMP du bean entity avec les propriétés énumérées dans le tableau suivant :
Propriétés du champ BMP |
Valeur du champ BMP |
Nom |
Nom d’attribut UML |
Type |
Type déterminé par le type de l'attribut (voir la table des correspondances de types). |
Champ clé |
Faux |
Générer le champ dans la classe d'implémentation du bean |
Vrai |
Générer "getter" et "setter" |
Vrai |
Promouvoir "getter" et "setter" vers les interfaces locales |
Vrai (s'il existe des interfaces locales) |
Promouvoir "getter" et "setter" vers les interfaces distantes |
Vrai (s'il existe des interfaces distantes) |
IsArray |
Vrai si l’attribut UML a une valeur supérieure limitée |
Si le type d’attribut est celui d’un autre bean entity ou d'un EJB, la transformation ne transforme pas l’attribut en champ BMP ou en association. Elle écrira alors un message dans le journal pour indiquer que l'attribut source ne sera pas transformé.
La transformation transforme également en champs CMP les attributs de la classe UML source qui sont marqués avec l'attribut <<Id>>, mais avec des valeurs de propriétés différentes, indiquées dans le tableau ci-après. Ces champs CMP aident à former la clé primaire.
Propriété du champ CMP 2.x et CMP 1.1 |
Valeur du champ CMP |
Nom |
Nom d’attribut UML |
Type |
Type déterminé par le type de l'attribut (voir la table des correspondances de types). |
Champ clé |
Vrai |
Générer le champ dans la classe d'implémentation du bean |
Faux |
Générer "getter" et "setter" |
Vrai |
Promouvoir "getter" et "setter" vers les interfaces locales |
Faux |
Promouvoir "getter" et "setter" vers les interfaces distantes |
Faux |
IsArray |
Vrai si l’attribut UML a une valeur supérieure limitée |
Si le type d’attribut est celui d’un autre bean entity ou enterprise, la transformation ne transforme pas l’attribut en champ CMP ou en association. Elle écrira alors un message dans le journal pour indiquer que l'attribut source ne sera pas transformé.
La transformation transforme également en champs BMP les attributs de la classe UML source qui sont marqués avec l'attribut <<Id>>, mais avec des valeurs de propriétés différentes, indiquées dans le tableau ci-après. Ces champs BMP aident à former la clé primaire.
Propriétés du champ BMP |
Valeur du champ BMP |
Nom |
Nom d’attribut UML |
Type |
Type déterminé par le type de l'attribut (voir la table des correspondances de types). |
Champ clé |
Vrai |
Générer le champ dans la classe d'implémentation du bean |
Vrai |
Générer "getter" et "setter" |
Vrai |
Promouvoir "getter" et "setter" vers les interfaces locales |
Faux |
Promouvoir "getter" et "setter" vers les interfaces distantes |
Faux |
IsArray |
Vrai si l’attribut UML a une valeur supérieure limitée |
Si le type d’attribut est celui d’un autre bean entity ou enterprise, la transformation ne transforme pas l’attribut en champ clé BMP ou en association. Elle écrira alors un message dans le journal pour indiquer que l'attribut source ne sera pas transformé.
Comme le montre le tableau suivant, la transformation génère les champs CMP et BMP avec des types basés sur le type de l'attribut source :
Type d’attribut UML |
Type de champ CMP/BMP |
booléen |
booléen |
octet |
octet |
caractère |
caractère |
variable flottante |
variable flottante |
int |
int |
long |
long |
court |
court |
Booléen |
java.lang.Boolean |
Octet |
java.lang.Byte |
Caractère |
java.lang.Char |
Variable flottante |
java.lang.Float |
Entier |
java.lang.Integer |
Long |
java.lang.Long |
Court |
java.lang.Short |
Chaîne |
java.lang.String |
autre |
Nom qualifié complet |
La transformation transforme les opérations non marquées sur la classe UML source en méthodes métiers sur le bean entity. Au départ, l'opération est transformée de la même manière qu'une opération sur une classe UML non marquée. L'opération transformée est ajoutée aux classes énumérées dans le tableau suivant, avec quelques modifications.
Classe |
Modifications des méthodes |
Classe de bean |
Aucun changement |
Interface locale |
Méthode d’interface |
Interface distante |
Méthode d’interface, lève java.rmi.RemoteException |
La transformation transforme les opérations <<Requête>> sur la classe UML source en l’un de ces deux types de méthodes de requêtes : la méthode de localisation et la méthode de sélection. Cette dernière n'existe que dans les beans entity CMP 2.x.
La transformation génère des méthodes de localisation dans les classes énumérées dans le tableau suivant, avec quelques modifications.
Classe |
Modifications des méthodes |
Interface home locale (s'il existe des interfaces locales) |
|
Interface home distante (s'il existe des interfaces distantes) |
|
Nom d’opération UML |
Nom de méthode de localisation |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Types de retours d’analyse syntaxique de transform Java |
Type de retour de méthode de localisation |
Recueil |
java.util.Collection |
Défini |
java.util.Set |
Liste |
java.util.Collection |
SortedList |
java.util.Set |
<nom de classe source>[] |
java.util.Collection |
<nom de classe source> OU “vide” |
|
<nom de type défini par l'utilisateur>[] |
java.util.Collection |
<nom de classe non source (par exemple, Chaîne, Entier, etc.)>[] |
java.util.Collection |
<nom de type défini par l'utilisateur> |
Générer une méthode de sélection et non une méthode de localisation |
<nom de classe non source (par exemple, Chaîne, Entier, etc.)> |
Générer une méthode de sélection et non une méthode de localisation |
La transformation EJB crée une tâche qui indique que vous avez besoin d'ajouter manuellement une requête au descripteur de déploiement pour chacune des méthodes de localisation qui sont générées.
La transformation transforme une opération requête en méthode de sélection si la visibilité pour l’opération est privée ou si le type de retour est différent du nom de la classe UML source et que le bean entity est du type CMP 2.x.
Visibilité de l’opération |
Type de retour |
Type de méthode |
Privée |
Egal au nom de la classe source |
Méthode de sélection |
Non privée |
Egal au nom de la classe source |
Méthode de localisation |
Privée |
Différent du nom de la classe source |
Méthode de sélection |
Non privée |
Différent du nom de la classe source |
Méthode de sélection |
La transformation génère des méthodes de sélection dans la classe de bean avec les modifications suivantes :
Nom d’opération UML |
Nom de la méthode de sélection |
xxx |
ejbSelectXxx |
selectXxx |
ejbSelectXxx |
SelectXxx |
ejbSelectXxx |
ejbSelectXxx |
ejbSelectXxx |
Types de retours d’analyse syntaxique de transform Java |
Type de retour de méthode de sélection |
Recueil |
java.util.Collection |
Défini |
java.util.Set |
Liste |
java.util.Collection |
SortedList |
java.util.Set |
<nom de classe source>[] |
java.util.Collection |
<nom de classe source> OU “vide” |
Nom d’interface locale |
<nom de type défini par l'utilisateur>[] |
java.util.Collection |
<nom de classe non source (par exemple, Chaîne, Entier, etc.)>[] |
java.util.Collection |
<nom de type défini par l'utilisateur> |
Nom de type défini par l'utilisateur |
<nom de classe non source (par exemple, Chaîne, Entier, etc.)> |
Nom de classe non source |
La transformation EJB crée une tâche qui indique que vous avez besoin d'ajouter manuellement une requête au descripteur de déploiement pour chacune des méthodes de sélection qui sont générées.
La transformation transforme les opérations <<Requête>> sur la classe UML source en un type unique de méthode de requête : les méthodes de localisation. En effet, les beans entity CMP 1.1 ne prennent pas en charge les méthodes de sélection qui ne sont disponibles que pour les beans entity CMP 2.x. Il en résulte que, quels que soient le type de retour et la visibilité de l'opération <<Requête>>, la transformation génère toujours une méthode de localisation dans l'interface home distante du bean entity.
Comme le montre le tableau suivant, la transformation génère des méthodes de localisation dans l'interface home distante, avec quelques modifications :
Classe |
Modifications des méthodes |
Interface home distante |
|
Nom d’opération UML |
Nom de méthode de localisation |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Types de retours d’analyse syntaxique de transform Java |
Type de retour de méthode de localisation |
Recueil |
java.util.Collection |
Défini |
java.util.Set |
Liste |
java.util.Collection |
SortedList |
java.util.Set |
<nom de classe source>[] |
java.util.Collection |
<nom de classe source> OU “vide” |
Nom d’interface distante |
<nom de type défini par l'utilisateur>[] |
java.util.Collection |
<nom de classe source (par exemple, Chaîne, Entier, etc.)>[] |
java.util.Collection |
<nom de type défini par l'utilisateur> |
Nom d’interface distante |
<nom de classe non source (par exemple, Chaîne, Entier, etc.)> |
Nom d’interface distante |
La transformation EJB crée une tâche qui indique que vous avez besoin d'ajouter manuellement une requête au descripteur de déploiement pour chacune des méthodes de localisation qui sont générées.
La transformation transforme les opérations <<Requête>> sur la classe UML source en un type unique de méthode de requête : les méthodes de localisation. En effet, les beans entity BMP, quelle que soit leur version, ne prennent pas en charge les méthodes de sélection qui ne sont disponibles que pour les beans entity CMP 2.x. Il en résulte que, quels que soient le type de retour et la visibilité de l'opération <<Requête>>, la transformation génère toujours une méthode de localisation dans la classe d'implémentation des beans. La transformation génère alors des méthodes de localisations dans les interfaces existantes du bean entity.
Comme le montre le tableau suivant, la transformation génère des méthodes de localisation dans les classes suivantes, avec quelques modifications :
Classe |
Modifications des méthodes |
Interface home locale |
|
Interface home distante (s'il existe des interfaces distantes) |
|
Classe d'implémentation des beans |
|
Nom de l'opération UML |
Nom de méthode de localisation |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
ejbFindXxx |
findEjbFindXxx |
EjbFindXxx |
findEjbFindXxx |
Nom de l'opération UML |
Nom de méthode de localisation |
xxx |
ejbFindXxx |
findXxx |
ejbFindXxx |
FindXxx |
ejbFindXxx |
ejbFindXxx |
ejbFindEjbFindXxx |
EjbFindXxx |
ejbFindEjbFindXxx |
Types de retours d’analyse syntaxique de transform Java |
Type de retour de méthode de localisation |
Recueil |
java.util.Collection |
Défini |
java.util.Set |
Liste |
java.util.Collection |
SortedList |
java.util.Set |
<nom de classe source>[] |
java.util.Collection |
<nom de classe source> OU “vide” |
|
<nom de type défini par l'utilisateur>[] |
java.util.Collection |
<nom de classe non source (par exemple, Chaîne, Entier, etc.)>[] |
java.util.Collection |
<nom de type défini par l'utilisateur> |
|
<nom de classe non source (par exemple, Chaîne, Entier, etc.)> |
|
Types de retours d’analyse syntaxique de transform Java |
Type de retour de méthode de localisation |
Recueil |
java.util.Collection |
Défini |
java.util.Set |
Liste |
java.util.Collection |
SortedList |
java.util.Set |
<nom de classe>[] |
java.util.Collection |
<nom de classe> OU “vide” |
Nom de classe clé |
Ignoré.
Ignoré.
Conditions d'utilisation | Retours d'informations
(C) Copyright IBM Corporation 2004. All Rights Reserved.