Définition des correspondances d'entité

Définissez le stéréotype des classes persistantes pour les transformer en classes d'entité EJB 3.

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 { ... }

Pour plus d'informations sur la définition des correspondances de classes d'entité, voir Modélisation des correspondances objet/relationnel (O/R).

Options de correspondance d'entité EJB 3

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.

Mise en correspondance avec plusieurs tables

Dans EJB 3, les classes d'entité peuvent être mises en correspondance avec plusieurs tables. Pour plus d'informations sur la mise en correspondance d'une classe d'entité et de plusieurs tables, voir Modélisation des correspondances objet/relationnel (O/R).

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 y a plusieurs tables secondaires pour une entité.

Définition de la correspondance d'un identifiant primaire

Trois types de correspondance d'identifiant primaire sont pris en charge dans EJB 3.0 :

  • Correspondance d'identifiant simple - Ce type de clé primaire peut être généré automatiquement dans EJB 3. Vous pouvez définir la classe et les paramètres de générateur. Il existe quatre types de classe de générateur : Identity, Sequence, Table et Auto. Les générateurs de table et de séquence nécessitent la définition de certains paramètres. Reportez-vous à la spécification de la persistance EJB 3.0 pour plus de détails.

    Vous pouvez définir la classe et les paramètres de générateur dans l'onglet EJB 3 Persistence de la feuille de propriétés d'un identifiant primaire. Les paramètres prennent la forme param1=value1; param2=value2.

    L'annotation Id générée spécifie la propriété de clé primaire ou le champ d'une entité. L'annotation GeneratedValue fournit la spécification des stratégies de génération pour les valeurs des clés primaires :

@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)
  • Correspondance d'identifiant composite - L'annotation IdClass sera générée pour une classe d'entité ou une superclasse mise en correspondance afin de spécifier une classe de clé primaire composite qui est mise en correspondance avec plusieurs champs ou propriétés de l'entité :

@IdClass(com.acme.EmployeePK.class)
@Entity
public class Employee {
  @Id String empName;
  @Id Date birthDay;
 ...
}
  • Correspondance d'identifiant primaire incorporé - correspond à une correspondance d'identifiant primaire de composant. L'annotation EmbeddedId est générée pour un champ ou une propriété persistante d'une classe d'entité ou d'une classe de superclasse mise en correspondance pour signaler une clé primaire composite qui est une classe incorporable :

@EmbeddedId
protected EmployeePK empPK;

Définition des correspondances d'attribut

Chaque attribut persistant ayant un type de base peut être mis en correspondance avec une colonne. Suivez 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.

Définition de la correspondance de gestion de versions

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 mis 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; }