Funktionsumfang und Platzierung von Annotationen

Sie können Annotationen auf Klassen-, Methoden- und Feldebene in den Quellcode aufnehmen.

Annotationen verwenden

EJB 3.1 und Java™ Persistence API verwenden Metadatenannotationen. Dieses Feature wurde in J2SE 5.0 eingeführt. Eine Annotation besteht aus dem Zeichen "@", gefolgt von einem Annotationstyp. Auf diesen folgt in manchen Fällen eine Liste von Element/Wert-Paaren in Klammern. Die EJB 3.1-Spezifikation definiert verschiedene Annotationstypen wie die folgenden:
  • Komponentendefinierende Annotation, wie z. B. @Stateless, die den Bean-Typ angibt.
  • @Remote und @Local geben an, ob auf eine Bean über Fernzugriff oder lokal zugegriffen werden kann.
  • @TransactionAttribute gibt Transaktionsattribute an.
  • @MethodPermissions, @Unchecked und @SecurityRoles geben Sicherheits- und Methodenberechtigungen an.
JPA (Java Persistence API) fügt Annotationen hinzu, die sich speziell auf die Erstellung von Entitäten beziehen, wie z. B.:
  • @Entity ist eine komponentendefinierende Annotation, die angibt, dass es sich bei einer Klasse um eine Entität handelt.
  • @Table gibt die in der Klasse zu verwendende Datenquelle an.
Anmerkung: JPA-Zuordnungsannotationen (wie z. B. @Id und @Column) können auf Felder und Methoden angewendet werden, aber für eine bestimmte Entitätsklasse können sie nur auf Felder oder Methoden angewendet werden. Das bedeutet, dass entweder alle Annotationen auf Felder oder alle Annotationen auf Methoden angewendet werden müssen. Felder können nur die Sichtbarkeit "Private", "Protected" oder "Package" haben und die Clients einer Entität dürfen nicht direkt auf die Felder zugreifen, d. h., Sie müssen öffentliche Getter und Setter definieren.

Funktionsumfang und Platzierung von Annotationen

Annotationen werden auf Klassen-, Schnittstellen-, Methoden- oder Feldebene ausgeführt. Komponentendefinierende Annotationen (wie @Stateless oder @Entity) sind beispielsweise Annotationen auf Klassenebene und werden im Kommentarabschnitt vor der Klassendeklaration eingefügt:
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 {
Die Reihenfolge dieser Annotationen ist nicht von Bedeutung. Üblicherweise wird die komponentendefinierende Annotation vor anderen Annotationen platziert, aber diese Platzierung ist nicht erforderlich. Annotationen auf Methoden- und Feldebene erscheinen innerhalb der Klasse oder Methode:
public class JPACounterEntity {

    @Id
    private String primarykey = "PRIMARYKEY";

    private int value = 0;
Symbol das den Typ des Artikels anzeigt. Konzeptartikel
Nutzungsbedingungen für Information Center | Feedback

Symbol für Zeitmarke Letzte Aktualisierung: 29.04.2014

Dateiname: cusingannotations.html