Chapter 6 Génération d'objet persistants pour Java et de pages JSF
Définissez le stéréotype des classes persistantes pour les transformer en classes d'entité EJB 3. Reportez-vous au chapitre Modélisation des correspondances O/R pour plus d'informations sur la définition des correspondances des classes d'entité.
L'annotation d'entité est générée pour spécifier que la classe est une entité.
@Entity @Table(name="EMPLOYEE") public class Employee { ... }
Les options correspondance spécifiques à EJB3 suivantes peuvent être définies sur l'onglet EJB 3 Persistence de la feuille de propriétés d'une classe.
Option | Description |
---|---|
Nom d'entité | Spécifie que l'alias de classe peut être utilisé dans EJB QL. |
Stratégie d'accès | Spécifie le type d'accès par défaut (FIELD ou PROPERTY) |
Nom de schéma | Spécifie le nom du schéma de base de données. |
Nom de catalogue | Spécifie le nom du catalogue de base de données. |
Type de définition de correspondance | Spécifie ce qui sera généré pour les métadonnées de correspondance : le fichier de correspondances, les annotations, ou les deux. |
Valeur de discriminant | Spécifie la valeur discriminante permettant de distinguer les instances de la classe. |
Dans EJB 3, les classes d'entité peuvent être mises en correspondance avec plusieurs tables. Reportez-vous au chapitre Modélisation des correspondances O/R pour plus d'informations sur la mise en correspondance d'une classe d'entité et de plusieurs tables.
Aucune vérification ne permet d'assurer que les tables secondaires ont des clés de référence pointant sur des clés primaires.
L'annotation SecondaryTable est générée pour spécifier une table secondaire pour la classe d'entité annotée. L'annotation SecondaryTables est utilisée lorsqu'il il y a plusieurs tables secondaires pour une entité.
Trois types de correspondance d'identifiant primaire sont pris en charge dans EJB 3.0 :
@Id @GeneratedValue(strategy=GenerationType.TABLE, generator="customer_generator") @TableGenerator( name=" customer_generator", table="Generator_Table", pkColumnName="id", valueColumnName="curr_value", initialValue=4 ) @Column(name="cid", nullable=false)
@IdClass(com.acme.EmployeePK.class) @Entity public class Employee { @Id String empName; @Id Date birthDay; ... }
@EmbeddedId protected EmployeePK empPK;
Chaque attribut persistant ayant un type de base peut être mis en correspondance avec une colonne. Suiviez les instructions pour définir les correspondances d'attribut pour ce type d'attributs persistants.
Les options de correspondance d'attribut spécifiques à EJB3 sont disponibles sur l'onglet EJB 3 Persistence de la feuille de propriétés de chaque attribut :
Option | Description |
---|---|
Attribut de version | Spécifie si l'attribut est mis en correspondance en tant qu'attribut de version. |
Insérable | Spécifie que les colonnes mises en correspondance doivent être incluses dans les instructions SQL INSERT. |
Modifiable | Spécifie que les colonnes mises en correspondance doivent être incluses dans les instructions SQL UPDATE. |
Charger | Spécifie si l'attribut doit être chargé à la demande. |
Générer une méthode de recherche | Génère une fonction de recherche pour l'attribut. |
L'annotation Basic est générée pour spécifier le mode de chargement pour l'attribut et la propriété et indiquer si cet attribut ou cette propriété est obligatoire. L'annotation Column est générée pour spécifier une colonne mise en correspondance pour une propriété ou un champ persistant.
@Basic @Column(name="DESC", nullable=false, length=512) public String getDescription() { return description; }
D'autres annotations peuvent également être générés pour indiquer le type de persistance d'un attribut ou d'une propriété. Une annotation Temporal spécifie qu'une propriété ou un attribut persistant doit persister comme un type temporel. L'annotation enumerated existe également pour les types enumerated et Lob pour les types d'objets de grande taille.
Utilise la gestion des version pour procéder à un verrouillage optimiste. Si vous souhaitez utiliser ce type de fonctionnalité, vous devez définir un attribut persistant comme attribut Version, en sélectionnant l'option Attribut de version sur l'onglet EJB 3 Persistence. Les types suivants sont pris en charge pour Attribut de version : int, Integer, short, Short, long, Long, Timestamp.
L'attribut Version doit être mise en correspondance avec la table principale pour la classe d'entité. Les applications qui mettent en correspondance la propriété Version avec une table autre que la table principale ne seront pas portables. Un seul attribut Version doit être définir pour chaque classe Entity.
L'annotation Version est générée afin de spécifier l'attribut ou la propriété de version d'une classe d'entité qui est utilisé comme sa valeur de verrouillage optimiste.
@Version @Column(name="OPTLOCK") protected int getVersionNum() { return versionNum; }
Copyright (C) 2008. Sybase Inc. All rights reserved. |
![]() |