Alphonse Bendt |
Version vom: $Date: 2001/02/27 12:05:54 $
|
Zurück | Hauptseite |
Vorschlag : EntwurfsregelnLogikschicht: die L Objekte- Alle L Objekte sind EJB Proxies, dass heisst: * Sie enthalten alle EJB Methoden + Zugriffskontrolle. * Kein Objekt aus der Präsentationsschicht darf die EJBs Methoden direkt aufrufen, nur Proxies oder statische Methoden der Operations-Klasse. - Alle Assoziationen in der Datenbankschicht spiegeln sich als KOMMENTAR-Assoziationen zwischen L Objekten wieder; dass heisst, die L Objekte realisieren diese Assoziationen AUSSCHLIESSLICH über die Datenbankschicht, ohne Referenzen auf andere L Objekte zu speichern, es sei denn, es besteht keine Inkonsistenzgefahr. Konkret: ein LEvent hat mehrere assoziierte LTicketContingents. Das LEvent Objekt speichert keine Liste mit den zugeordneten LTicketContingents; bei Bedarf kann sich das LEvent eine Liste von LTicketContingent'en erzeugen lassen (oder ein einzelnes LTicketKontingent), indem es die ItemFactory nach der ID fragt. - nur das ItemFactory-Objekt darf L Objekte erzeugen; die ItemFactory erhält man von dem ServletContext, durch getAttribute("itemfactory"). - die L Objekte werden durch ID identifiziert; es ist die Rolle der Factory diese IDs auf die entsprechenden EJBs abzubilden. Präsentationsschicht:Alle Objekte der Logikschicht werden durch ID identifiziert. ID enthält auch den Typ, als Integerkonstante ! Es gibt 3 Arten von Operationen bzw. Szenarien: I) II) einziges III) Transaktionale Operationen auf mehrere Beans
- wenn sie einer L-Klasse zugeordnet werden können, wird eine solche Operation als L-Methode implementiert. Sie ruft direkt eine entsprechende Bussiness-Methode der Entity EJB auf, wobei eventuell Parameters umgewandelt werden müssen. Die Implementierung als Bussiness-Methode in der Entity EJB hat den Vorteil des impliziten Transaktionsschutz.
- wenn nicht, dann wird die Operation in der Logikschicht als statische Methode der Klasse Operations definiert. Sie wird aber weiter in einer Session Bean implementiert, die den Transaktionsschutz gewährleistet.
Egal ob in L-Klasse oder Operations, bekommt jede solche Operation als Parameters Referenzen auf L-Objekte; dass heisst, die Präsentationsschicht muss die IDs in Referenzen auf L-Objekte umwandeln lassen (durch ItemFactory.getItem()).
Auf der anderen Seite, die tatsächliche Implementierung in der Entity EJB, bzw. SessionBean soll nur EJB-Referenzen als Parameters bekommen. Dass heist, die L-Methode bzw. die statische Operation muss die Referenzen auf L-Objekte in EJB Referenzen umwandeln ( z.B durch |
Zurück | Top | Hauptseite |