4.1.6.2 Annotationen für EJB 3.0
Klasse
- @java.persistence.Entity - kennzeichnet eine Java-Klasse als persistente Entität
- @Table(name = "xXx") - legt den Namen der Tabelle in der Datenbank fest (Standardeinstellung: Name der Entität Name der Tabelle)
- @SequenceGenerator(name = "invoice_sequence", sequenceName "invoice_id_seq") - initialisiert einen Sequence-Generator und generiert eine Sequence und weist dieser einen Namen zu
ID-Attribut
- @Id - kennzeichnet ein Attribut als Primärschlüssel
- @GeneratedValue - generiert einen Wert
Attribute
- @Column(name="xXx") - legt den Spaltennamen in der Datenbank fest (Standardeinstellung: Attributname Spaltenname)
- @Column(name="NAME", nullable=false, length=64) - legt neben dem Spaltenname fest, dass das Attribut not null ist und maximal 64 Zeichen lang ist
- @Basic - kennzeichnet Attribut als einfaches Attribut
- @GeneratedValue(strategy= GenerationType.SEQUENCE, generator "invoice_sequence") - Attributwert wird mit einem Generator erzeugt
Assoziationen
- @OneToOne(...)
- @OneToMany(...)
- @ManyToOne(...)
- @ManyToMany(...)
Löschregeln
- cascade
- cascade= =PERSIST ~ alle assozierten Entitäten werden mit gespeichert
- cascade= =REFRESH ~ beim Nachladen werden auch assoziierte Objekte nachgeladen
- cascade= =REMOVE ~ beim Löschen werden auch assoziierte Entitäten gelöscht
- cascade= =MERGE ~ beim Überschreiben persistenter Entitäten werden auch assoziierte Entitäten überschrieben
- cascade= =ALL ~ alle o. g. Operationen werden an assoziierte Entitäten weitergegeben
Laderegeln für verbundene Objekte
- FetchType
- FetchType.LAZY ~ verbundene Objekte werden erst beim Zugriff nachgeladen
- FetchType.EAGER
Vererbungsstrategien
- @Inheritance(...)
- strategy.InheritanceType.JOINED ~ Basisklasse und abgeleitete Klasse werden jeweils in einer eignen Tabelle gespeichert und beim Laden über einen Join wieder verbunden
- strategy.InheritanceType.SINGLE_TABLE
- strategy.InheritanceType.TABLE_PER_CLASS
Eingebettete Objekte
- zwei Objekte, welche java-seitig assoziiert sind, sollen in der Datenbank als Komposition in einer Tabelle abgelgt werden
- @Embeddable ~ wird in einer anderen DB-Tabelle gespeichert
- @Embedded ~ nimmt eine andere Tabelle auf
Persistenz-Kontext
- transaktionsgebunden: @javax.persistence.PersistenceContext - Annotation vor dem EntityManager
- EntityManagerFactory emf; EntityManager em = emf.createEntityManager(PersistenceContextType.Extended);
Transaktionen
- @TransactionAttribute(REQUIRED) vor der Methode, welche in einer Transaktion ablaufen soll
Abfragen
weiter zu 4.1.6.3 Umsetzung der Datenzugriffsschicht
zurück zu 4.1.6.1 EJB 3.0 allgemein
zurück zu 4.1.6 Referenzimplementierung der Persistenzschicht
zurück zu 4.1 Implememtierung der Referenzanwendung
zurück zu 4 Implementierung
zurück zu [FrontPage]