GORM -> Wo?

Hier finden sich Fragen und Ergänzung zur Dokumentation. // All questions and discussions about the documentation.
Antworten
Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

GORM -> Wo?

Beitrag von Well » 05.02.2010, 22:52:52

Moin :)

Ich möchte mich nun nach etwas Pause weiter mit dem APF beschäftigen, nun erst mal mit dem GORM. :)

Was mich nun aber total verwirrt -> Von wo "rufe" ich den GORM "auf"? Im umgt Modul geschieht dies ja direkt aus der Businessschicht heraus, im Guestbook2009 gibt es dafür aber einen extra Mapper? Wo liegt das der Unterschied?

Noch eine zweite Frage: Der GORM bringt ja eine Klasse für die Objekte mit, auf dessen Eigenschaften dann mit set- bzw. getProperty zugreifen kann. Was mache ich nun aber, wenn ich einen setter bzw. getter noch beeinflussen möchte? Als Beispiel: Ich möchte, dass der Benutzername eines Benutzers nur Optional ist; Wenn er nicht angegeben wurde, soll die E-Mail-Adresse genutzt werden. Meine Idee wäre gewesen, nun im Getter für den Benutzernamen zu prüfen, ob das Attribut einen Wert hat, wenn ja, den zurückzugeben und wenn nein, die E-Mail-Adresse zurückzugeben. Aber das lässt sich ja so nicht realisieren? (Oder wäre diese Stelle sowieso der falsche Ort um soetwas zu implentieren?)

MfG

Benutzeravatar
dr.e.
Administrator
Beiträge: 4605
Registriert: 04.11.2007, 16:13:53

Re: GORM -> Wo?

Beitrag von dr.e. » 07.02.2010, 10:41:01

Hallo Well,

schön dich wieder im APF-Forum zu hören. :)
Was mich nun aber total verwirrt -> Von wo "rufe" ich den GORM "auf"? Im umgt Modul geschieht dies ja direkt aus der Businessschicht heraus, im Guestbook2009 gibt es dafür aber einen extra Mapper? Wo liegt das der Unterschied?
Noicht verwirren lassen, die beiden Module zeigen lediglich die beiden Möglichkeiten, den GORM einzusetzen. Du kannst diesen entweder wie im UMGT-Modul direkt als Datenschicht-Ersatz nutzen und die GenericDomainObject-Instanzen, die er zurückliefert in der Anwendung verwenden, oder wie im Gästebuch2009-Modul diese nochmal in eigene Objekte mappen (=eigener Mapper). Warum das im Gästebuch2009-Modul so gemacht wurde hat lediglich den Grund zu zeigen, dass es notwendig ist, die Datenhaltung gegen die Anwendung zu abstrahieren, wenn man die Datenschicht austauschbar halten möchte. Sofern du das nicht brauchst, kannst du wie im UMGT-Modul vorgehen.

Augefrufen wird der Mapper einfach wie unter http://adventure-php-framework.org/Seit ... er-Instanz beschrieben - Factory erzeugen und Mapper von dieser beziehen. Wichtig ist dabei jedoch, dass du zuvor die entsprechenden Konfigurationen (Objekte, Beziehungen, Datenbank-Verbindung) angelegt hast.
Noch eine zweite Frage: Der GORM bringt ja eine Klasse für die Objekte mit, auf dessen Eigenschaften dann mit set- bzw. getProperty zugreifen kann. Was mache ich nun aber, wenn ich einen setter bzw. getter noch beeinflussen möchte? Als Beispiel: Ich möchte, dass der Benutzername eines Benutzers nur Optional ist; Wenn er nicht angegeben wurde, soll die E-Mail-Adresse genutzt werden. Meine Idee wäre gewesen, nun im Getter für den Benutzernamen zu prüfen, ob das Attribut einen Wert hat, wenn ja, den zurückzugeben und wenn nein, die E-Mail-Adresse zurückzugeben. Aber das lässt sich ja so nicht realisieren? (Oder wäre diese Stelle sowieso der falsche Ort um soetwas zu implentieren?)
Das ist meiner Ansicht nach nicht in einem Domänen-Objekt aufgehoben, sondern sollte in der Business-Logik der Anwendung stecken. Du hast ja für diesen Anwendungsfall üblicherweise ein Formular und einen Controller, die die Logik schon abbilden. Im Controller füllst du dann die Property, die für den Benutzer-Namen genutzt wird, einfach mit dem Benutzer-Namen oder falls nicht vorhanden mit der E-Mail. Anschließend gibst du das Domänen-Objekt dann an den Mapper zum Speichern. Schau dir dazu vielleicht mal die Methode saveUser() um UMGT-Modul (Klasse: umgtManager), dort ist so eine ähnliche Logik implementiert.
Viele Grüße,
Christian

Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

Re: GORM -> Wo?

Beitrag von Well » 10.02.2010, 14:39:38

Dankeschön :)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast