ADF Persistenzmechanismen ADF BC und EJB/JPA im Vergleich Hendrik Gossens

Nürnberg,| 19.11.2013 MT AG

GESCHÄFTSFORM INHABERGEFÜHRTE AG

HAUPTSITZ RATINGEN

GRÜNDUNGSJAHR 1994

BESCHÄFTIGTE 180 FESTANGESTELLTE MITARBEITER

BETEILIGUNGEN MT-IFS GMBH (RATINGEN), MT-IFS SARL (LUXEMBURG)

BUSINESS SOCIAL BUSINESS MOBILE INTELLIGENCESOLUTIONS SOLUTIONS SOLUTIONS

APPLICATION INTEGRATION IT SYSTEM DEVELOPMENT SERVICES SERVICES business by integration | Agenda

1. Objektrelationales Mapping (ORM) 2. ADF Business Components (ADFbc) 3. Enterprise 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 - Struktur - Identität departmentId: Long - Datenkapselung departmentName: String - 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, , 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

konfiguriert durch Persistence PersistenceUnit EntityManager Unit Factory

erzeugt find() persist() merge() Persistence verwaltet EntityManager remove() Entity Context

10 | ADF BC und EJB/JPA im Vergleich PersistenceUnit - Ausschnitt persistence.

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 Entity Beans (@Entity) Container- Bean- singleton stateless stateful managed managed persistence persistence

Message-Driven Beans

EJB 3.1

14 | ADF BC und EJB/JPA im Vergleich Konzeptuelle Sicht auf EJB

SessionBean EntityManager (Service) find() persist() merge() remove() persistence.xml …

DataSource „Entity Bean“

@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, , 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

Session Bean singleton 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

EJB Session Bean Application Module 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 Hendrik Gossens, Di, 11 Uhr vs. ADF BC Continuous Integration für Oracle DB und Apex Peter Busch, Dominic Ketteltasche, Di, 12 Uhr Mein Backup – die richtige Strategie oder der totale Volker Mach, Di 16 Uhr Irrweg? Das APEX QS-Plugin Oliver Lemm, Mi, 12 Uhr Forms goes APEX – wie man es richtig macht Niels de Bruijn, Sven-Olaf Kelbert, Mi 15 Uhr USABLE_FILE_MB im Oracle ASM oder wenn der Ernst Leber, Mi, 16 Uhr nutzbare Plattenplatz negativ wird Erstellen einer mobilen Applikation mit PhoneGap Wolfgang Nast, Do, 9 Uhr und ADF Mobile Experten-Panel: APEX und DB-Programmierung Niels de Bruijn, Do, 11 Uhr Java Unterstützung von Multithreading in den Wolfgang Nast, Do, 12 Uhr Versionen 1.0 bis 7 3 Wochenenden Strohwitwer Christof Kaller, Do, 12 Uhr business by integration | Treffen der Deutschen ADF Community

Wann Dienstag, 19. Nov., 14.00 – 14.45 Uhr

Wo Warum ‹ Neuigkeiten zu Oracle ADF erfahren Raum Sydney ‹ 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: [email protected] www.mt-ag.com|