Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

Warum Java diese komischen Frameworks so beliebt sind

<< < (2/3) > >>

MadMetzger:
Also eigentlich würde ich mich nicht als "Round-Trip-Engineering-Fan" sehen. Ich präferiere eher die Variante des "Hinzufügens" von einzelnen "Komponenten" zu einem Fachmodell, das als Basis dient. Beispielsweise ist das Einbauen der Persistenz solch ein Schritt, oder wenn man dafür sorgen will, dass ein Fachmodell "observierbar" wird. Wahrscheinlich hast du mit deiner Aussage auf meinen "Wunsch" nach einem Mapper in ein Meta-Modell angespielt, oder? Dann hast du mich da etwas missverstanden. Mir ging es da eher um eine von "3,5" möglichen Strategien, ein Objektmodell in eine relationale Datenbank abzubilden. Wer Fowlers "Patterns of Enterprise Application Architecture" gelesen hat, wird die ersten "2,5" davon wiedererkennen (Mal so aus dem Gedächtnis hingeschrieben):

* Single-Table-Inheritance: Alle Klassen einer Hierarchie in eine Tabelle
* Class-Table-Inheritance
* Concrete-Class-Table-Inheritance: Je konkrete Klasse eine Tabelle, Attribute der Oberklassen werden "ausmultipliziert"
* One-Table-Per-Class: Eine Tabelle je Klasse, Vererbungsbeziehung per Fremdschlüssel(also Delegation auf Tabellenebene)
* Meta-Modell: Abbildung der Klassenstruktur in ein Meta-Modell mit Tabellen für Typen, Assoziationen, Vererbung, Objekte, Verknüpfungen und Werte (für "primitive" Typen wie Strings) Solch ein Mapper ist mir bisher halt nicht bekannt... Kann man sich aber selbst schreiben... ;) Ansonsten können wir das bei einem Bier diskutieren, wenn du mal in Hannover bist...  ;D

Mit Hibernate spart man sich auch nicht wirklich SQL, unser Ansatz war halt, da wir eben erstmal isoliert entwickeln wollten, dass man dieses Verhalten tief in die Datenbank schiebt. Wahrscheinlich sind Views auch nicht der Weisheit letzter Schluss, vielleicht wären StoredProcedures sogar noch eine bessere Wahl. Aber in letzterem Fall hätten wir eben recht viel an anderen Stellen verändern müssen, was so noch nicht gewünscht war.

flaite:

--- Zitat von: MadMetzger am 23.04.08 - 21:26:28 ---Wer Fowlers "Patterns of Enterprise Application Architecture" gelesen hat, wird die ersten "2,5" davon wiedererkennen (Mal so aus dem Gedächtnis hingeschrieben):

* Single-Table-Inheritance: Alle Klassen einer Hierarchie in eine Tabelle
* Class-Table-Inheritance
* Concrete-Class-Table-Inheritance: Je konkrete Klasse eine Tabelle, Attribute der Oberklassen werden "ausmultipliziert"
* One-Table-Per-Class: Eine Tabelle je Klasse, Vererbungsbeziehung per Fremdschlüssel(also Delegation auf Tabellenebene)
* Meta-Modell: Abbildung der Klassenstruktur in ein Meta-Modell mit Tabellen für Typen, Assoziationen, Vererbung, Objekte, Verknüpfungen und Werte (für "primitive" Typen wie Strings) Solch ein Mapper ist mir bisher halt nicht bekannt... Kann man sich aber selbst schreiben... ;) Ansonsten können wir das bei einem Bier diskutieren, wenn du mal in Hannover bist...  ;D

--- Ende Zitat ---
Aber man kann die alle mit Hibernate implementieren. Hat aber natürlich nicht den Namen des Patterns in dem Hibernate-Metadata.
http://www.hibernate.org/hib_docs/reference/en/html/inheritance.html

--- Zitat ---
Mit Hibernate spart man sich auch nicht wirklich SQL, unser Ansatz war halt, da wir eben erstmal isoliert entwickeln wollten, dass man dieses Verhalten tief in die Datenbank schiebt. Wahrscheinlich sind Views auch nicht der Weisheit letzter Schluss, vielleicht wären StoredProcedures sogar noch eine bessere Wahl. Aber in letzterem Fall hätten wir eben recht viel an anderen Stellen verändern müssen, was so noch nicht gewünscht war.

--- Ende Zitat ---
Verschiebt ihr nicht mit beiden Lösungen die Implementierung auf eine low-level Ebene. Man kann das wie gesagt auch im Hibernate Modell definieren. Ich hab z.B. auch ein Single-Table-Inheritance: Alle Klassen einer Hierarchie in eine Tabelle in meinem IBatis Modell.

--- Code: --- <resultMap id="person" class="de.spintegration.fussi.bo.Person">
<result property="id" column="ID"/>
<result property="name" column="NAME"/>
<result property="pwd" column="PWD"/>
<result property="email" column="EMAIL"/>
<discriminator column="TYPE" javaType="String">
<subMap value="Trader" resultMap="trader"/>
<subMap value="Admin" resultMap="admin"/>
</discriminator>
</resultMap>

<resultMap id="trader" class="de.spintegration.fussi.bo.Trader" extends="person">
<result property="money" column="MONEY"/>
</resultMap>

<resultMap id="admin" class="de.spintegration.fussi.bo.Admin" extends="person">
</resultMap>


--- Ende Code ---
wobei im Objekt-Modell Trader extends Person und Admin extends Person  ;)


--- Zitat ---Ansonsten können wir das bei einem Bier diskutieren, wenn du mal in Hannover bist...

--- Ende Zitat ---
Gerne. Nur bin ich da praktisch nie. Freunde von mir bezeichnen meinten schon, ich wär sowas wie die Luxusausführung eines chinesischen Wanderarbeiters.

MadMetzger:

--- Zitat von: Axel Janssen am 24.04.08 - 17:06:30 ---
--- Zitat von: MadMetzger am 23.04.08 - 21:26:28 ---Wer Fowlers "Patterns of Enterprise Application Architecture" gelesen hat, wird die ersten "2,5" davon wiedererkennen (Mal so aus dem Gedächtnis hingeschrieben):

* Single-Table-Inheritance: Alle Klassen einer Hierarchie in eine Tabelle
* Class-Table-Inheritance
* Concrete-Class-Table-Inheritance: Je konkrete Klasse eine Tabelle, Attribute der Oberklassen werden "ausmultipliziert"
* One-Table-Per-Class: Eine Tabelle je Klasse, Vererbungsbeziehung per Fremdschlüssel(also Delegation auf Tabellenebene)
* Meta-Modell: Abbildung der Klassenstruktur in ein Meta-Modell mit Tabellen für Typen, Assoziationen, Vererbung, Objekte, Verknüpfungen und Werte (für "primitive" Typen wie Strings) Solch ein Mapper ist mir bisher halt nicht bekannt... Kann man sich aber selbst schreiben... ;) Ansonsten können wir das bei einem Bier diskutieren, wenn du mal in Hannover bist...  ;D

--- Ende Zitat ---
Aber man kann die alle mit Hibernate implementieren. Hat aber natürlich nicht den Namen des Patterns in dem Hibernate-Metadata.
http://www.hibernate.org/hib_docs/reference/en/html/inheritance.html

--- Ende Zitat ---
Leider kann Hibernate gerade diese letzte Strategie "Meta-Modell" nicht. Die ersten "2,5" kann es, habe ich zum Teil auch selbst schonmal verwendet. Bei der Umsetzung hätte Hibernate den Vorteil, dass es die Tabellenstruktur von vornherein schon kennen würde, da es sich nach dem Bild im Anhang richten kann (Ja, das Diagramm wird dann als Class-Table abgebildet).


--- Zitat von: Axel Janssen am 24.04.08 - 17:06:30 ---Verschiebt ihr nicht mit beiden Lösungen die Implementierung auf eine low-level Ebene. Man kann das wie gesagt auch im Hibernate Modell definieren. Ich hab z.B. auch ein Single-Table-Inheritance: Alle Klassen einer Hierarchie in eine Tabelle in meinem IBatis Modell.

--- Ende Zitat ---
Das ist richtig, dass wir die Versionierung und Historisierung bisher ganz tief in die Datenbank verlagern. Aber zumindest die Historisierung von Daten lässt sich, soweit ich das jetzt nach längerem Nachdenken überblicken kann, nicht vor der restlichen Logik verstecken. Das liegt aber eben an der fachlichen Natur von Historisierung.


--- Zitat von: Axel Janssen am 24.04.08 - 17:06:30 ---wobei im Objekt-Modell Trader extends Person und Admin extends Person  ;)

--- Ende Zitat ---
Was ich auf den allerersten Blick für keine "gute" Vererbungsbeziehung halten würde... ;) Aber dazu kenne ich den Hintergrund ja nicht... Würde das eher so sehen, dass Personen Rollen haben. Und diese Rollen sind dann eben Trader oder auch Admin. Bei der Vererbungsbeziehung kann eine Person nicht beides gleichzeitig sein. ;) SCNR


--- Zitat von: Axel Janssen am 24.04.08 - 17:06:30 ---
--- Zitat ---Ansonsten können wir das bei einem Bier diskutieren, wenn du mal in Hannover bist...

--- Ende Zitat ---
Gerne. Nur bin ich da praktisch nie. Freunde von mir bezeichnen meinten schon, ich wär sowas wie die Luxusausführung eines chinesischen Wanderarbeiters.

--- Ende Zitat ---
Witzige Bezeichnung... Aber wenn du mal da sein solltest, wäre das mal eine Idee... :)

flaite:

--- Zitat von: MadMetzger am 24.04.08 - 17:28:25 ---Was ich auf den allerersten Blick für keine "gute" Vererbungsbeziehung halten würde... ;) Aber dazu kenne ich den Hintergrund ja nicht... Würde das eher so sehen, dass Personen Rollen haben. Und diese Rollen sind dann eben Trader oder auch Admin. Bei der Vererbungsbeziehung kann eine Person nicht beides gleichzeitig sein. ;) SCNR

--- Ende Zitat ---
Person ist abstract. Eine Person kann nicht Trader UND Admin sein.

MadMetzger:
Naja, egal... Ich finde nur das Erben von einer Fachklasse "Person" nicht unbedingt gut, aus den von mir genannten Gründen. Aber hier kann das auch ganz anders sein... :) Bin da irgendwie ein bißchen drauf getrimmt, mir solche Modellierungen zu durchdenken...

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln