Datenbankzugriff mit der Java Persistence Api

Preview:

Citation preview

Software Technik

Christian Baranowski

HTWG Konstanz

Datenbankzugriff mit der Java Persistence API

Requirement Analysis

Testing

System Design

Coding

Delivery

Wasserfallmodell

Wiederholung AJAX

•Fragen Sie alle Aufgaben vom Server ab via AJAX und zeigen Sie diese in ihrer HTML Anwendung an.

Übungen I

Einführung in dieJava Persistence API

Disk

Data

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

Basic Mappings@Table(name = "Adr")@Entitypublic 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;

Warum sollte eine Entity die Schnittstelle Serializable implementieren?

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>();

@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>();

Assoziationen / Relationen

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

•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...

Übungen II

Software Technik

Christian Baranowski

HTWG Konstanz

Testing

17.12.2010 um 14:00 Uhr

Recommended