ORACLE Business Components for Java (BC4J) Marco Grawunder
Gliederung 2 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
Probleme von J2EE/EJB 3 J2EE verlangt immer noch viel Handarbeit Wie erzeugt man gute J2EE-Anwendungen? Design Pattern von Sun Value Object Pattern Session Facade Pattern Fast-Lane Reader Pattern Page-by-Page Iterator Pattern J2EE BC4J Komponenten Deployment Fazit
Value Object Pattern I 4 Szenario mit Entity Beans: Client Object getcustomerinfo() getcity() getstate() getzipcode() Customer EntityBean create() CustomerInfo EntityBean Client Server Problem: Viele Remote Zugriffe teuer! J2EE BC4J Komponenten Deployment Fazit
Value Object Pattern II 5 (Teil eines) Objekt wird zusammengefasst, übertragen und lokal verwendet ( Local Access) Objekt hat nur Zugriffsmethoden (keine Geschäftslogik) Client Object getcustomerinfo() getcity() getstate() getzipcode() CustomerInfo ValueObject Customer EntityBean create() Client Server viele lokale Zugriffe: weniger Last auf Entity Bean & auf Netz aber: Gefahr unaktueller Daten ( Snapshot!) J2EE BC4J Komponenten Deployment Fazit
Session Facade I 6 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
Session Facade II 7 Client Object do() Session Facade dothis() Session Bean1 Entity Bean1 Entity Bean2 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
J2EE Design Pattern 8 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
BC4J Überblick 9 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, Master- Detail-Synchronisation BC4J Java Klassenbibliotheken Tool-Unterstützung: Oracle JDeveloper 9i (mit vielen Wizards Demo) J2EE BC4J Komponenten Deployment Fazit
Architektur einer BC4J Anwendung 10 Client Side Presentation Server Side Presentation Geschäftslogik Enterprise Information Systems J2EE BC4J Komponenten Deployment Fazit
Komponenten einer BC4J Anwendung 11 Entity Objekte Assoziation J2EE BC4J Komponenten Deployment Fazit
Entity Objekte 12 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
Entity Objects 13 J2EE BC4J Komponenten Deployment Fazit
Komponenten einer BC4J Anwendung 14 View Objekte J2EE BC4J Komponenten Deployment Fazit
View Objekte 15 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
View Objects 16 J2EE BC4J Komponenten Deployment Fazit
Komponenten einer BC4J Anwendung 17 Applikation J2EE BC4J Komponenten Deployment Fazit
Applikationsmodul 18 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
Applikationsmodul 19 J2EE BC4J Komponenten Deployment Fazit
Verteilung 20 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
Fazit 21 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
Danke! 22 J2EE BC4J Komponenten Deployment Fazit