Software Technik
            HTWG Konstanz



        Datenbankzugriff mit der
            Java Persistence API



                            Christian Baranowski
Requirement Analysis          Wasserfallmodell

              System Design



                          Coding



                                   Testing



                                             Delivery
Wiederholung AJAX
Asynchronous JavaScript and XML



                       Heute meist
                       JSON
Übungen I
•Fragen Sie alle Aufgaben vom Server ab via AJAX
 und zeigen Sie diese in ihrer HTML Anwendung an.
Einschub
Was sind Java Annotation?

Als Annotation wird im Zusammenhang mit der
Programmiersprache Java ein Sprachelement
bezeichnet, das die Einbindung von Metadaten in
den Quelltext erlaubt. - Wikipedia
Einführung in die
Java Persistence API

         Data




         Disk
Was ist JPA?
•Ein Standard um Objekt-Relationalen Abbildung
 von Objekten in Datenbanken zu ermöglichen.
•Für die Abbildung der Objekte auf die Tabellen
 (Datenbank) werden Java Annotationen genutzt
•JPA ist spezifiziert durch JSR - 220
•JPA ist Teil der EJB 3.X Spezifikation
•JPA kann in Java SE und Java EE genutzt werden!
Objekte sind POJOs in JPA
•Was sind POJO?
  •POJO steht für Plain Old Java Object
  •Unter POJO versteht man ein gewöhnliches
     Java Objekt in Abgrenzung zu einem
     Enterprise JavaBean.
•Beispiel: Seller Klasse
Warum sollte eine Entity die
Basic Mappings                  Schnittstelle Serializable
                                implementieren?
  @Table(name = "Adr")
  @Entity
  public class Address implements Serializable {
      @Id
      @Column(name = "ADDRESS_ID")
      @GeneratedValue(strategy = GenerationType.SEQUENCE)
      private long id;
      @Basic
      private String city;
      @Basic
      private String country;
      @Basic
      private String province;
      @Basic
      @Column(name = "P_CODE")
      private String postalCode;
      @Basic
      private String street;
Assoziationen / Relationen
  @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true,
      fetch = FetchType.LAZY)
  @JoinColumn(name = "ADDR_ID")
  private Address address;

  @ManyToOne(fetch = FetchType.LAZY)
  private JobTitle jobTitle;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "MANAGER_ID")
  private Employee manager;

  @OneToMany(mappedBy = "manager")
  private List<Employee> managedEmployees =
     new ArrayList<Employee>();
Assoziationen / Relationen
  @OneToMany(mappedBy = "owner", cascade = CascadeType.ALL,
     orphanRemoval = true)
  private List<PhoneNumber> phoneNumbers = new
     ArrayList<PhoneNumber>();

  @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
  @JoinColumn(name="EMP_ID")
  private List<Degree> degrees = new ArrayList<Degree>();

  @ManyToMany
  @JoinTable(name = "PROJ_EMP",
    joinColumns = @JoinColumn(name = "EMP_ID"),
    inverseJoinColumns = @JoinColumn(name = "PROJ_ID"))
  private List<Project> projects = new ArrayList<Project>();
Cascade Type
•ALL - Cascade all operations
•MERGE - Cascade merge operation
•PERSIST - Cascade persist operation
•REFRESH - Cascade refresh operation
•REMOVE - Cascade remove operation
Fetch Type
•EAGER - Defines that data must be eagerly
fetched.
•LAZY - Defines that data can be lazily fetched.
Entity
 •Entity hat immer einen eindeutigen Schlüssel (ID)
  dieser identifiziert die Entität
 •Equals auf Basis der ID...
Entity Manager
•API bietet alle Funktion für den Datenbankzugriff:
 •persist
 •remove
 •createQuery
 •merge
 •findXXX
 •....
Entity Manager
•Wenn die Objekte (Entity Klassen) auch als Daten
 Transfer Objekte genutzt werden sollen können
 sie vom Entity Manager gelöst werden man spricht
 von detached Entities!
Detached Entities
•Managed Entities werden vom Entity Manager
 gelöst wenn:
 •clear oder detach
 •mittels rollback
 •Entity Manager closed
Übungen II

•Erweitern Sie Ihre Aufgaben Verwaltung um eine
 Datenbank Anbindung mittels JPA

 •Schritt 1. Domain Modell markieren mit den JPA
  Annotationen für das OR Mapping...

 •Schritt II. Repository Funktionen zum speichern
  und laden einer Aufgabe umsetzen...
Software Technik
            HTWG Konstanz



                                      Testing
                        17.12.2010 um 14:00 Uhr




                             Christian Baranowski

Datenbankzugriff mit der Java Persistence Api

  • 1.
    Software Technik HTWG Konstanz Datenbankzugriff mit der Java Persistence API Christian Baranowski
  • 2.
    Requirement Analysis Wasserfallmodell System Design Coding Testing Delivery
  • 3.
  • 4.
    Asynchronous JavaScript andXML Heute meist JSON
  • 5.
    Übungen I •Fragen Siealle Aufgaben vom Server ab via AJAX und zeigen Sie diese in ihrer HTML Anwendung an.
  • 6.
    Einschub Was sind JavaAnnotation? Als Annotation wird im Zusammenhang mit der Programmiersprache Java ein Sprachelement bezeichnet, das die Einbindung von Metadaten in den Quelltext erlaubt. - Wikipedia
  • 7.
    Einführung in die JavaPersistence API Data Disk
  • 8.
    Was ist JPA? •EinStandard um Objekt-Relationalen Abbildung von Objekten in Datenbanken zu ermöglichen. •Für die Abbildung der Objekte auf die Tabellen (Datenbank) werden Java Annotationen genutzt •JPA ist spezifiziert durch JSR - 220 •JPA ist Teil der EJB 3.X Spezifikation •JPA kann in Java SE und Java EE genutzt werden!
  • 9.
    Objekte sind POJOsin JPA •Was sind POJO? •POJO steht für Plain Old Java Object •Unter POJO versteht man ein gewöhnliches Java Objekt in Abgrenzung zu einem Enterprise JavaBean. •Beispiel: Seller Klasse
  • 10.
    Warum sollte eineEntity die Basic Mappings Schnittstelle Serializable implementieren? @Table(name = "Adr") @Entity public class Address implements Serializable { @Id @Column(name = "ADDRESS_ID") @GeneratedValue(strategy = GenerationType.SEQUENCE) private long id; @Basic private String city; @Basic private String country; @Basic private String province; @Basic @Column(name = "P_CODE") private String postalCode; @Basic private String street;
  • 11.
    Assoziationen / Relationen @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) @JoinColumn(name = "ADDR_ID") private Address address; @ManyToOne(fetch = FetchType.LAZY) private JobTitle jobTitle; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "MANAGER_ID") private Employee manager; @OneToMany(mappedBy = "manager") private List<Employee> managedEmployees = new ArrayList<Employee>();
  • 12.
    Assoziationen / Relationen @OneToMany(mappedBy = "owner", cascade = CascadeType.ALL, orphanRemoval = true) private List<PhoneNumber> phoneNumbers = new ArrayList<PhoneNumber>(); @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) @JoinColumn(name="EMP_ID") private List<Degree> degrees = new ArrayList<Degree>(); @ManyToMany @JoinTable(name = "PROJ_EMP", joinColumns = @JoinColumn(name = "EMP_ID"), inverseJoinColumns = @JoinColumn(name = "PROJ_ID")) private List<Project> projects = new ArrayList<Project>();
  • 13.
    Cascade Type •ALL -Cascade all operations •MERGE - Cascade merge operation •PERSIST - Cascade persist operation •REFRESH - Cascade refresh operation •REMOVE - Cascade remove operation
  • 14.
    Fetch Type •EAGER -Defines that data must be eagerly fetched. •LAZY - Defines that data can be lazily fetched.
  • 15.
    Entity •Entity hatimmer einen eindeutigen Schlüssel (ID) dieser identifiziert die Entität •Equals auf Basis der ID...
  • 16.
    Entity Manager •API bietetalle Funktion für den Datenbankzugriff: •persist •remove •createQuery •merge •findXXX •....
  • 17.
    Entity Manager •Wenn dieObjekte (Entity Klassen) auch als Daten Transfer Objekte genutzt werden sollen können sie vom Entity Manager gelöst werden man spricht von detached Entities!
  • 18.
    Detached Entities •Managed Entitieswerden vom Entity Manager gelöst wenn: •clear oder detach •mittels rollback •Entity Manager closed
  • 19.
    Übungen II •Erweitern SieIhre Aufgaben Verwaltung um eine Datenbank Anbindung mittels JPA •Schritt 1. Domain Modell markieren mit den JPA Annotationen für das OR Mapping... •Schritt II. Repository Funktionen zum speichern und laden einer Aufgabe umsetzen...
  • 20.
    Software Technik HTWG Konstanz Testing 17.12.2010 um 14:00 Uhr Christian Baranowski