ORACLE ORACLE Business Business Components Components for for Java Java (BC4J) (BC4J) Marco Grawunder 2 Gliederung • • • • • Probleme von J2EE/EJB „J2EE-Pattern“ Lösungsansatz: BC4J Architektur einer BC4J-Anwendung Komponenten – Entity Objects – View Objects – Application Modul • Verteilung (Deployment) • Fazit J2EE BC4J Komponenten Deployment Fazit 3 Probleme von J2EE/EJB • J2EE verlangt immer noch viel „Handarbeit“ • Wie erzeugt man gute J2EE-Anwendungen? Design Pattern von Sun – – – – – J2EE Value Object Pattern Session Facade Pattern Fast-Lane Reader Pattern Page-by-Page Iterator Pattern … BC4J Komponenten Deployment Fazit 4 Value Object Pattern I • Szenario mit Entity Beans: Client Object Customer EntityBean getCustomerInfo() CustomerInfo EntityBean create() getCity() getState() getZipCode() Client Server • Problem: Viele Remote Zugriffe teuer! J2EE BC4J Komponenten Deployment Fazit 5 Value Object Pattern II • (Teil eines) Objekt wird zusammengefasst, übertragen und lokal verwendet ( Local Access) • Objekt hat nur Zugriffsmethoden (keine Geschäftslogik) Client Object getCustomerInfo() CustomerInfo ValueObject Customer EntityBean create() getCity() getState() getZipCode() Server Client • viele lokale Zugriffe: weniger Last auf Entity Bean & auf Netz • aber: Gefahr unaktueller Daten ( Snapshot!) J2EE BC4J Komponenten Deployment Fazit 6 Session Facade I • bietet eine einheitliche, workflow orientierte Schnittstelle zu einer Menge von EJBs • wird als Session Bean implementiert Client Object Session Bean1 Entity Bean1 Entity Bean2 doThis() doThat() doMore() Client Server • Ohne Session Facade muss der Client alle Methoden des Servers kennen enge Koppelung J2EE BC4J Komponenten Deployment Fazit 7 Session Facade II Client Object do() Session Facade Session Bean1 Entity Bean1 Entity Bean2 doThis() doThat() doMore() Client Server • Mit Session Facade braucht der Client nicht alle Methoden des Servers kennen lose Koppelung • Einfachere Unterstützung unterschiedlicher Clienttypen • reduzierte Netzwerkkommunikation • größere Flexibilität J2EE BC4J Komponenten Deployment Fazit 8 J2EE Design Pattern • Fast-Lane Reader Pattern Accelerate read-only data access by not using enterprise beans • Page-by-Page Iterator Pattern: Efficiently access a large, remote list by retrieving its elements one sublist of value objects at a time. • Katalog mit den Pattern: http://java.sun.com/blueprints/patterns/j2ee_patterns/index.html • Frage: – Wann setzt man welche Pattern ein? – Wie setzt man die Pattern um? Hoher Aufwand Sinnvoll: Unterstützung, z.B. durch ein Framework J2EE BC4J Komponenten Deployment Fazit 9 BC4J – Überblick • Oracle Business Components for Java (BC4J) ist ein technisches Framework basierend auf Java und XML • Erlaubt – Entwicklung mehrschichtiger, datenbankgetriebener Java Anwendungen auf der Basis von Komponenten (nicht nur J2EE!) – flexible Verteilungsmöglichkeiten (Deployment) für die Komponenten – relativ einfache Anbindung schmaler Java Swing-, Servlet- und Java Server Page Clients • Unterstützung der Anwendungsentwicklung durch – Softwarebausteine: Connection Pooling, Caching, Locking, MasterDetail-Synchronisation BC4J Java Klassenbibliotheken – Tool-Unterstützung: Oracle JDeveloper 9i (mit vielen Wizards Demo) J2EE BC4J Komponenten Deployment Fazit 10 Architektur einer BC4J Anwendung Client Side Presentation Server Side Presentation Geschäftslogik Enterprise Information Systems J2EE BC4J Komponenten Deployment Fazit 11 Komponenten einer BC4J Anwendung Entity Objekte Assoziation J2EE BC4J Komponenten Deployment Fazit 12 Entity Objekte • Entity Objekte definieren eine objekt-relationale Abbildung der Tabellen der Datenbank (Spalten werden zu Attributen) • Implementieren Geschäftslogiken und Validierungsregeln • Bestehen aus einer XML-Datei (Metadaten) und einer Java-Datei (Implementierung der Geschäftslogik) • Beziehungen zwischen Entity Objekten werden durch Assoziationen abgebildet (basieren auf Foreign-Key-Constraints in der DB) • Regeln DB-Interaktionen • Caching und Locking auf Ebene der Entity Objects Value-Object, KEIN Entity Bean! J2EE BC4J Komponenten Deployment Fazit 13 Entity Objects J2EE BC4J Komponenten Deployment Fazit 14 Komponenten einer BC4J Anwendung View Objekte J2EE BC4J Komponenten Deployment Fazit 15 View Objekte • • • • View Objekte kapseln SQL-Zugriffe Beruhen auf Entity Objekten Clients greifen über die View Objekte auf die Entity Objekte zu Spezielle Read-Only View Objekte greifen direkt auf die DB zu Fast Lane Reader • Bieten Funktionen zum Navigieren über Ergebnismengen • Änderungen über View Objekte durch Delegation an Entity Objekte (Geschäftslogik) • Master-Detail-Beziehungen über View-Links Query Bean J2EE BC4J Komponenten Deployment Fazit 16 View Objects J2EE BC4J Komponenten Deployment Fazit 17 Komponenten einer BC4J Anwendung Applikation J2EE BC4J Komponenten Deployment Fazit 18 Applikationsmodul • Zusammenfassung von View Objekten und View Links zur Unterstützung eines Anwendungsfalles (Session Bean Facade) • Dient als Schnittstelle von BC4J-Applikationen zum Client • Kann weitere Dienste in Form von Custom Methods anbieten • Bildet Komponenten, die auf unterschiedliche Plattformen verteilt werden können (Deployment) • Definiert Transaktionskontext • Applikationen können sich auch wiederum auf andere Applikationen abstützen Zusammengesetzte Applikationen J2EE BC4J Komponenten Deployment Fazit 19 Applikationsmodul J2EE BC4J Komponenten Deployment Fazit 20 Verteilung • Das BC4J Framework unterstützt flexible Verteilung auf unterschiedliche Plattformen ohne Änderung der Anwendungskomponenten – Als Enterprise JavaBeans (Application Module wird zu Session Bean) – Als Java CORBA Komponenten (Application Module wird zu CORBA Server Object) – Lokal (Application Module wird JAR-Archiv) • Oracle JDeveloper 9i unterstützt Deployment nach – Oracle9i Application Server – Visibroker (CORBA) – BEA WebLogic J2EE BC4J Komponenten Deployment Fazit 21 Fazit • BC4J unterstützt Anwendungsentwicklung von datenbankbasierten Anwendungen • Saubere Schichtentrennung (entsprechend der J2EE-Architektur) • Verteilung auf unterschiedliche Plattformen ohne Codemodifikation möglich • relativ einfache Erstellung unterschiedlicher Java Clients • Gute Tool-Unterstützung (Oracle JDeveloper 9i) • Recht hoher Einarbeitungsaufwand • Weitere Informationen: http://otn.oracle.com/products/jdev/ J2EE BC4J Komponenten Deployment Fazit 22 Danke! J2EE BC4J Komponenten Deployment Fazit