Puede añadir anotaciones al código fuente a nivel de clase, método y
campo.
Utilización de anotaciones
EJB 3.1 y la API de
persistencia Java™ (JPA) utilizan anotaciones
de metadatos, que es un elemento que apareció en J2SE 5.0. Una anotación consta del
signo @ precediendo a un tipo de anotación, algunas veces seguido por una lista
entre paréntesis de pares elemento-valor. La especificación EJB 3.1 define varios
tipos de anotación, por ejemplo:
- Anotación que define el componente, tal como @Stateless, que
especifica el tipo de bean
- @Remote y @Local especifican si un bean es
accesible de forma remota o local
- @TransactionAttribute especifica atributos de transacción
- @MethodPermissions, @Unchecked y
@SecurityRoles especifican permisos de seguridad y de método
La API de persistencia Java añade anotaciones
específicas de la creación de entidades, por ejemplo:
- @Entity es una anotación que define el componente y que
especifica que una clase es una entidad
- @Table especifica el origen de datos que se debe utilizar en la
clase
Nota: Las anotaciones de correlación JPA (por ejemplo,
@Id, @Column) se pueden aplicar a campos y
métodos, pero para cualquier clase de entidad individual, puede aplicar las
anotaciones sólo a campos o a métodos. Los campos solo pueden tener visibilidad
privada, protegida o de paquete, y no se permite que los clientes de una entidad
accedan a los campos directamente, por lo que es necesario definir métodos de
obtención y de establecimiento públicos.
- @MethodPermissions, @Unchecked y
@SecurityRoles especifican permisos de seguridad y de método
Ámbito y emplazamiento de las anotaciones
Las anotaciones
trabajan a nivel de clase, interfaz, método o campo. Por ejemplo, las anotaciones
que definen el componente (tales como
@Stateless o
@Entity) son anotaciones a nivel de clase y se insertan en la
sección de comentarios antes de la declaración de clases:
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 {
El orden de estas anotaciones no es importante; normalmente, la anotación que define
el componente se coloca antes que otras anotaciones, pero este emplazamiento no es
obligatorio.
Las anotaciones a nivel de método y de campo aparecen dentro de la clase o método:
public class JPACounterEntity {
@Id
private String primarykey = "PRIMARYKEY";
private int value = 0;