Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Objektrelationales Mapping mit JPA Architektur Jonas Bandi Simon Martinelli.

Ähnliche Präsentationen


Präsentation zum Thema: "Objektrelationales Mapping mit JPA Architektur Jonas Bandi Simon Martinelli."—  Präsentation transkript:

1 Objektrelationales Mapping mit JPA Architektur Jonas Bandi Simon Martinelli

2 EJB Verwendung von JPA innerhalb EntityManagerFactory public class EmployeeServiceBean implements EmployeeService protected EntityManager em;... }

3 EJB und EXTENDED Standardmässig ist der Persistence Context im Modus TRANSACTION In Stateful Session Beans ist es aber möglich diesen auf EXTENDED zu ändern public class EmployeeServiceBean implements EmployeeService type = PersistenceContextType.EXTENDED) protected EntityManager em;... }

4 Data Access Object (DAO) Problem You want to encapsulate data access and manipulation in a separate layer Solution Use a Data Access Object to encapsulate all access to the persistent store. The Data Access Object manages the connection with the data source to obtain and store data DAOs werden als einfache, zustandslose Klassen realisiert, die den Zugriff auf eine Datenquelle kapseln Ziele: Trennung von Business Logik und technischer Zugriffslogik Kapselung von Zugriff auf Datenbank oder Fremdsystem

5 DAO Klassendiagramm

6 DAO und JPA Häufig überflüssig dank EntityManager GenericDAO public interface GenericDAO { T create(T t); T find(Class type, Serializable id); T update(T t); void delete(Object t); List findByNamedQuery(String queryName); List findByNamedQuery(String queryName, Map parameters); }

7 Transfer Object (TO) Problem You want to transfer multiple data elements over a tier Solution Use a Transfer Object to carry multiple data across a tier Daten werden in Datencontainern zusammengefasst und über Tier-Grenzen transportiert Das Konzept sollte generell zwischen den Schichten eingesetzt werden Ziel Verringerung der übertragenen Datenmenge

8 TO und JPA Mit Constructor Expressions existiert eine einfache Möglichkeit direkt aus den Resultaten Transfer Objects zu erzeugen. public class EmpMenu { public EmpMenu(String employeeName, String deptName) {...} } List result = em.createQuery( "SELECT NEW jpa.util.EmpMenu(e.name, e.department.name) " + "FROM Project p JOIN p.employees e " + "where p.name = "ZLD").getResultList(); for (EmpMenu menu : result) { log.info(menu.employeeName + "," + menu.deptName); }

9 Schichtung und Verteilung ApplikationsserverDB Server Datenzugriff Business Client oder Webserver Präsentations- schicht Datenhaltung FassadeService 3rd Party Applikation XY TOs und Entities Ausschliesslich TOs

10 Client/Server Ausschliesslich TOs Entities

11 Batch Problematik Sequenzielle Verarbeitung von grossen Datenmengen Verwendung von Cursors mit JPA nicht möglich Lösung Pagination Vorsicht Persistence Context kann gross werden und sollte regelmässig aufgeräumt werden ( EntitManager.clear() )

12 Clustering Zur Erhöhung der Verfügbarkeit und der Verbesserung der Performance werden Application Server häufig geclustert Problem Persistence Context auf mehreren Knoten vorhanden Synchronität mit Datenbank nicht gegeben Lösung Synchronisation (Providerabhängig) Referesh der Entitäten bei Bedarf


Herunterladen ppt "Objektrelationales Mapping mit JPA Architektur Jonas Bandi Simon Martinelli."

Ähnliche Präsentationen


Google-Anzeigen