ADF Persistenzmechanismen ADF BC und EJB/JPA im Vergleich Hendrik Gossens Nürnberg, 19.11.2013
MT AG GESCHÄFTSFORM HAUPTSITZ INHABERGEFÜHRTE AG RATINGEN GRÜNDUNGSJAHR 1994 BESCHÄFTIGTE BETEILIGUNGEN 180 FESTANGESTELLTE MITARBEITER MT-IFS GMBH (RATINGEN), MT-IFS SARL (LUXEMBURG) BUSINESS INTELLIGENCE SOLUTIONS SOCIAL BUSINESS SOLUTIONS MOBILE SOLUTIONS APPLICATION DEVELOPMENT INTEGRATION SERVICES IT SYSTEM SERVICES business by integration
Agenda 1. Objektrelationales Mapping (ORM) 2. ADF Business Components (ADFbc) 3. Enterprise Java Beans (EJB) und Java Persistence API (JPA) 4. Showcase 5. Gegenüberstellung der Konzepte 3 ADF BC und EJB/JPA im Vergleich
Objektrelationales Mapping (ORM) Überführung von (Java-)Objekten in Datenbankstrukturen und umgekehrt - OOP-Sprachen kapseln Daten und Verhalten in Objekten - Relationale Datenbank speichern Daten in Tabellen => Object-relational Impedance Mismatch Einsatz von Frameworks wie ADFbc oder EJB/JPA empfehlenswert Department departmentid: Long departmentname: String - Struktur - Identität - Datenkapselung - Datentypen - Arbeitsweise - 4 ADF BC und EJB/JPA im Vergleich
ADF Schichtenarchitekur 5 ADF BC und EJB/JPA im Vergleich
ADF Business Components Standard -Persistenz-Framework von ADF Objektrelationales Mapping Transaktion und Locking Möglichkeiten der Manipulation ähnlich zu Forms (dodml, before lock, ) LOVs auf Attributen Wesentliche Komponenten Entity Objects View Objects Assoziationen View Links Application Modules 6 ADF BC und EJB/JPA im Vergleich
Konzeptuelle Sicht auf ADFbc Quelle: Oracle ADF Fundamentals Schulung 7 ADF BC und EJB/JPA im Vergleich
Gründe für ADF BC Gute Integration mit JDeveloper Gute Integration mit Oracle Datenbank Metadatengetrieben (XML) Deklarative Herangehensweise Einfach zu erlernen für Umsteiger aus der alten Oracle-Welt Wiederverwendbarkeit bestehender SQL-Kenntnisse (z.b. bei View Criterias) Java Implementierung anpassbar (Vererbung, Hook Points, ) Gute Skalierbarkeit Standardweg für ADF-Applikationen Gute Testbarkeit durch Business Components Tester 8 ADF BC und EJB/JPA im Vergleich
Java Persistence API (JPA) Schnittstelle um relationale Daten in Java-Applikationen zu verwalten Objektrelationales Mapping Leichtgewichtig Industrie- Standard Vielfältige Persistence Provider (BatooJPA, EclipseLink, Hibernate, OpenJPA, ) EclipseLink (früher Oracle TopLink) Referenzimplementierung von JPA 2.0 Plain Old Java Objects (POJO) Nutzung von JPA ist nicht auf Enterprise Java Beans (EJB) beschränkt - JPA ist Untermenge von EJB3, Implementierung bereitgestellt durch Persistence Provider - EJB Implementierung bereitgestellt durch EJB Container des Application Servers Konfigurierbar via Annotations und/oder XML 9 ADF BC und EJB/JPA im Vergleich
Konzeptuelle Sicht auf JPA Persistence erzeugt Persistence Unit konfiguriert durch PersistenceUnit EntityManager Factory Persistence Context verwaltet erzeugt EntityManager find() persist() merge() remove() Entity 10 ADF BC und EJB/JPA im Vergleich
PersistenceUnit - Ausschnitt persistence.xml 11 ADF BC und EJB/JPA im Vergleich
persistence.xml JDeveloper-Tooling (11g) 12 ADF BC und EJB/JPA im Vergleich
Beispiel JPA 13 ADF BC und EJB/JPA im Vergleich
Wichtige Begrifflichkeiten im EJB-Umfeld Session Beans singleton stateless stateful Entity Beans (@Entity) Containermanaged persistence Beanmanaged persistence Message-Driven Beans EJB 3.1 14 ADF BC und EJB/JPA im Vergleich
Konzeptuelle Sicht auf EJB SessionBean (Service) find() persist() merge() remove() EntityManager persistence.xml Entity Bean DataSource @Entity Department @Id departmentid: Long departmentname: String 15 ADF BC und EJB/JPA im Vergleich
Gründe für JPA/EJB Einfach erlernbar Breite Anzahl an Java Entwicklern Gute Dokumentation und Hilfestellung durch Java Community Datenbankunabhängig Offener Standard => verringert Gefahr des Vendor Lock-In Geringer Konfigurationsaufwand Eigene, SQL-ähnliche Abfragesprache (JPQL) + named queries Criteria Queries Multitenant Entities Breite Toolunterstützung (JDeveloper, Eclipse, NetBeans, ) Plain Old Java Objects (POJO) => Jede Java-Klasse persistierbar Gute Testbarkeit, z.b. mit Hilfe von JUnit Metadatengetrieben (XML oder Annotations) 16 ADF BC und EJB/JPA im Vergleich
JPA in ADF Verschiedene Möglichkeiten - ADF EJB DataControl => EJB und JPA Criteria Support Create/Merge/Delete Entities Transaktionsunterstützung - ADF Java DataControl => Java Facade und JPA Transaktionsunterstützung (Operations) Criteria Support Create/Merge/Delete Entities Model-Tester (via DataControl.dcx) - 17 ADF BC und EJB/JPA im Vergleich
EJB in ADF Zu implementierende EJB Funktionalität Typischerweise getter pro named query querybyrange(string jpqlstmt, int firstresult, int maxresults) - Wenn diese Methode implementiert ist, dann nutzt DataControl diese statt der getter-methode Transaktionssteuerung public boolean istransactiondirty() public void rollbacktransaction() public void committransaction() 18 ADF BC und EJB/JPA im Vergleich
EJB in ADF Optionen im Transaktionsverhalten singleton Session Bean stateless stateful Bean-Managed Transaction Implizites commit Explizites commit Container-Managed Transaction Implizites commit Explizites commit EJB Container
Showcase
Gegenüberstellung ADF BC und EJB/JPA ADFbc EJB/JPA bc4j.xcfg persistence.xml Application Module EJB Session Bean Java Service Facade View Objects Named Queries Entity Objects Entities 21 ADF BC und EJB/JPA im Vergleich
Zusammenfassung ADF unterstützt viele Möglichkeiten um ORM zu realisieren Ähnliche Konzepte von ADF BC und JPA JDeveloper unterstützt beide Persistenz-Frameworks gut (Editoren, ) Abstraktion und Austauschbarkeit über DataControls Auswahl u.a. abhängig vom Vorwissen der Entwickler ADF BC eher für Umsteiger aus der Oracle -Welt JPA hat bei Java-Entwicklern oft höhere Akzeptanz ADF BC deklarativer, JPA etwas mehr Programmieraufwand ADF BC Integration in JDeveloper besser als EJB/JPA Bei bestehendem Oracle Datenmodell: Erfahrungsgemäß besser ADF BC Sonst ggf. JPQL-Queries mit Oracle-Spezifika notwendig Hoher Aufwand Vorteile von JPA gehen verloren 22 ADF BC und EJB/JPA im Vergleich
Quellen http://docs.oracle.com/html/e24396_01/ejb3_overview_arch.html Oracle ADF Fundamentals Schulung 11g Update/Insert With JPA and EJB using ADF (Shay Schmelzer) http://www.youtube.com/watch?v=vypohmwd5y0 http://docs.oracle.com/cd/e28280_01/web.1111/b31974/bcquerying.htm http://openejb.apache.org/jpa-concepts.html http://docs.oracle.com/middleware/1212/adf/adfdc/ejb.htm http://docs.oracle.com/cd/e37547_01/tutorials/tut_jpa_app/tut_jpa_ejb.html http://www.oracle.com/technetwork/developer-tools/jdev/documentation/1212-nf- 1964675.html http://docs.oracle.com/middleware/1212/adf/adfdc/ejb.htm#chdeeaih 23 ADF BC und EJB/JPA im Vergleich
Vorträge auf der ADF BC und EJB/JPA im Vergleich ADF Persistenz-Frameworks im Vergleich JPA/EJB vs. ADF BC Continuous Integration für Oracle DB und Apex Mein Backup die richtige Strategie oder der totale Irrweg? Das APEX QS-Plugin Forms goes APEX wie man es richtig macht USABLE_FILE_MB im Oracle ASM oder wenn der nutzbare Plattenplatz negativ wird Erstellen einer mobilen Applikation mit PhoneGap und ADF Mobile Experten-Panel: APEX und DB-Programmierung Java Unterstützung von Multithreading in den Versionen 1.0 bis 7 3 Wochenenden Strohwitwer Hendrik Gossens, Di, 11 Uhr Peter Busch, Dominic Ketteltasche, Di, 12 Uhr Volker Mach, Di 16 Uhr Oliver Lemm, Mi, 12 Uhr Niels de Bruijn, Sven-Olaf Kelbert, Mi 15 Uhr Ernst Leber, Mi, 16 Uhr Wolfgang Nast, Do, 9 Uhr Niels de Bruijn, Do, 11 Uhr Wolfgang Nast, Do, 12 Uhr Christof Kaller, Do, 12 Uhr business by integration
Treffen der Deutschen ADF Community Wann Dienstag, 19. Nov., 14.00 14.45 Uhr Wo Raum Sydney Warum Neuigkeiten zu Oracle ADF erfahren Mit Product Managern und Experten sprechen Networking und...
Deutsche Oracle ADF Community Oracle ADF Community auf XING Twitter: @ADFCommunityDE ADF Spotlight: 30-minütige Web Seminare an jedem 2. Freitag ADF Project Sessions: Serie von eintägigen Workshops Regelmäßige Treffen mit Fachvorträgen und Diskussionen Zusammenarbeit mit der DOAG (Jahreskonferenz, SIG) DOAG Barcamp und ADF Hacker s Event (30./31. Januar 2014) Werden Sie Teil unserer Community!
Vielen Dank. MT AG Balcke-Dürr-Allee 9 40882 Ratingen Telefon: +49 (0) 21 02 309 61-0 Telefax: +49 (0) 21 02 309 61-101 E-Mail: info@mt-ag.com www.mt-ag.com