Menu

Seite4162

Anonymous

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

  • TODO

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]


Related

Documentation: FrontPage
Documentation: Seite000
Documentation: Seite400
Documentation: Seite410
Documentation: Seite416
Documentation: Seite4161
Documentation: Seite4163