Vous pouvez ajouter des annotations à votre code source au niveau classe, au niveau méthode et au niveau zone.
Utilisation d'annotations
EJB 3.1 et l'API JPA (Java™ Persistence API) utilisent des annotations de métadonnées, une fonctionnalité qui a été introduite dans J2SE 5.0. Une annotation est constituée du signe @ précédant un type d'annotation, parfois suivi d'une liste de paires élément-valeur placée entre parenthèses. La spécification EJB 3.1 définit divers types d'annotation, par exemple :
- L'annotation de définition de composant, telle que @Stateless, qui spécifie le type de bean
- @Remote et @Local spécifient si un bean est accessible à distance ou localement
- @TransactionAttribute spécifie des attributs de transaction
- @MethodPermissions, @Unchecked et @SecurityRoles spécifient des autorisations de sécurité et de méthode
JPA (Java Persistence API) ajoute des annotations spécifiques à la création d'entités, par exemple :
- @Entity est une annotation de définition de composant qui spécifie qu'une classe est une entité
- @Table spécifie la source de données à utiliser dans la classe
Remarque : Les annotations de mappage JPA (par exemple (@Id et @Column) peuvent être appliquées à des zones et à des méthodes, mais pour une même classe entité, vous pouvez les appliquer seulement à des zones ou seulement à des méthodes ; en d'autres termes, toutes les annotations doivent être appliquées à des zones ou bien elles doivent toutes être appliquées à des méthodes. Les zones ne peuvent avoir qu'une visibilité privée, protégée ou de package, et les clients d'une entité ne sont pas autorisés à accéder directement aux zones : vous devez donc définir des méthodes get et set publiques.
- @MethodPermissions, @Unchecked et @SecurityRoles spécifient des autorisations de sécurité et de méthode
Etendue et placement des annotations
Les annotations fonctionnent au niveau classe, interface, méthode ou zone. Par exemple, les annotations de définition de composant (comme
@Stateless ou
@Entity) sont des annotations de niveau classe et elles sont insérées dans la section des commentaires avant la déclaration de la classe :
package com.ibm.websphere.ejb3sample.counter;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
@Interceptors ( Audit.class )
public class StatelessCounterBean implements LocalCounter, RemoteCounter {
L'ordre de ces annotations n'est pas significatif ; en général, l'annotation de définition de composant est placée avant les autres annotations, mais ce n'est pas obligatoire. Les annotations de niveau méthode et de niveau zone apparaissent à l'intérieur de la classe ou de la méthode :
public class JPACounterEntity {
@Id
private String primarykey = "PRIMARYKEY";
private int value = 0;