als PDF-Dokument

Werbung
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
Herunterladen