Hallo, ich habe ein OSS Projekt bei dem als ORM ActiveJDBC gewählt wurde. Das Programm parst Rezepte aus verschiedenen Quellen und legt diese in der Datenbank ab.
Die Datenbank wird ihrerseits von einer JavaFX GUI benutzt.
Ein Rezept hat recht viele Aggregationen zu anderen Objekten wie Kategorie, Quelle, Zutaten (welches wiederum Aggregationen von Einheit und Menge hat)
Während der Implementierungsphase traten Probleme mit der "Active Record" Architektur der Library auf. Eins davon:
- Ein Parser versucht eine Quelle zu parsen und baut dazu ein Rezept Objekt zusammen. Möchte man nun die Aggregation eines Kategorie zum Rezept bilden muss die Kategorie zuerst in der Datenbank gespeichert sein.
Gibt der Parser nun das Rezept an den Aufrufer zurück und dieser entscheidet, dass das Rezept unvollständig ist weil bspw. der Titel des Rezepts fehlt, befinden sich Objekte in der Datenbank die eigentlich noch gar nicht in der Datenbank sein sollten aber man durch den Active-Record Ansatz dazu gezwungen wurde.
Dies löste ich nun durch Trennung von Datenbankobjekten und POJO. D.h. Alle Objekte aus der Datenbank wurden zur Verwendung in der Applikationslogik und GUI erst in POJO gemappt. POJO, die in die Datenbank sollten wurden nun erst zu Datenbankobjekten gemappt. Das ist eine Heidenarbeit, da ich bei POJO, die persistiert werden sollen erst überprüfen musste ob die Aggregationen bereits persistiert sind, ob die Aggregation bisher nur auf Objektebene besteht (falls ja, Beziehung in Datenbank anlegen - natürlich auch hier weider erst das Aggregationsende persistieren, das wiederum Aggregate hat) und weitere Dinge. Das wurde sehr schnell sehr komplex und ich implementierte dort Persistierungsregeln, die mir mir die Library eigentlich abnehmen sollte.
Es hat sich also während der Implementierung herausgestellt, dass die Architektur der Datenbankanbindung unstimmig ist. Ich bin auf der Suche nach der richtigen Architektur und benötige dazu Hilfe.
Der Active Record Ansatz ist gestorben, wenn man POJO bzw. das DAO Pattern anwenden möchte. Zwangsläufig denke ich also über den Wechsel der Datenbank-Library nach und möchte gern JPA mit Hibernate einsetzen. Allerdings überfordert mich diese Library auch ein wenig, da ich nicht weiß in welche Ebene/Stelle das persistieren gehört - und das möglichst generisch mit GenericDAO Ansatz.
Eigentlich kann mir jeder helfen, der eine Datenbank mit Hibernate angebunden hat und denkt, dass es gut umgesetzt ist.
Würde mich auch durch andere OSS Projekte wühlen, falls ihr welche empfehlen könnt.
Die Datenbank wird ihrerseits von einer JavaFX GUI benutzt.
Ein Rezept hat recht viele Aggregationen zu anderen Objekten wie Kategorie, Quelle, Zutaten (welches wiederum Aggregationen von Einheit und Menge hat)
Während der Implementierungsphase traten Probleme mit der "Active Record" Architektur der Library auf. Eins davon:
- Ein Parser versucht eine Quelle zu parsen und baut dazu ein Rezept Objekt zusammen. Möchte man nun die Aggregation eines Kategorie zum Rezept bilden muss die Kategorie zuerst in der Datenbank gespeichert sein.
Gibt der Parser nun das Rezept an den Aufrufer zurück und dieser entscheidet, dass das Rezept unvollständig ist weil bspw. der Titel des Rezepts fehlt, befinden sich Objekte in der Datenbank die eigentlich noch gar nicht in der Datenbank sein sollten aber man durch den Active-Record Ansatz dazu gezwungen wurde.
Dies löste ich nun durch Trennung von Datenbankobjekten und POJO. D.h. Alle Objekte aus der Datenbank wurden zur Verwendung in der Applikationslogik und GUI erst in POJO gemappt. POJO, die in die Datenbank sollten wurden nun erst zu Datenbankobjekten gemappt. Das ist eine Heidenarbeit, da ich bei POJO, die persistiert werden sollen erst überprüfen musste ob die Aggregationen bereits persistiert sind, ob die Aggregation bisher nur auf Objektebene besteht (falls ja, Beziehung in Datenbank anlegen - natürlich auch hier weider erst das Aggregationsende persistieren, das wiederum Aggregate hat) und weitere Dinge. Das wurde sehr schnell sehr komplex und ich implementierte dort Persistierungsregeln, die mir mir die Library eigentlich abnehmen sollte.
Es hat sich also während der Implementierung herausgestellt, dass die Architektur der Datenbankanbindung unstimmig ist. Ich bin auf der Suche nach der richtigen Architektur und benötige dazu Hilfe.
Der Active Record Ansatz ist gestorben, wenn man POJO bzw. das DAO Pattern anwenden möchte. Zwangsläufig denke ich also über den Wechsel der Datenbank-Library nach und möchte gern JPA mit Hibernate einsetzen. Allerdings überfordert mich diese Library auch ein wenig, da ich nicht weiß in welche Ebene/Stelle das persistieren gehört - und das möglichst generisch mit GenericDAO Ansatz.
Eigentlich kann mir jeder helfen, der eine Datenbank mit Hibernate angebunden hat und denkt, dass es gut umgesetzt ist.
Würde mich auch durch andere OSS Projekte wühlen, falls ihr welche empfehlen könnt.