datenbankzugriff mit der java persistence api
Post on 23-Jun-2015
2.105 Views
Preview:
TRANSCRIPT
Software Technik
Christian Baranowski
HTWG Konstanz
Datenbankzugriff mit der Java Persistence API
Requirement Analysis
Testing
System Design
Coding
Delivery
Wasserfallmodell
Wiederholung AJAX
Asynchronous JavaScript and XML
Heute meistJSON
•Fragen Sie alle Aufgaben vom Server ab via AJAX und zeigen Sie diese in ihrer HTML Anwendung an.
Übungen I
EinschubWas 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 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
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
•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
top related