Neues Plugin DataModel2JPA

vorhergehende Artikel in: Java Komponenten sQLshell GUI
13.04.2022

Nach längerer Pause wird nun ein weiteres neues Plugin für die sQLshell veröffentlicht. Ich beschäftigte mich mit JPA und suchte nach einer Methode, Entities für ein bestehendes Schema zu erzeugen.

Ausgehend von einem Repository auf GitHub wollte ich ein wenig mit JPA herumspielen. Selber Entities zu schreiben war mir aber zu aufwendig - zumal es nicht nur meine eigenen Beispieldatenbanken zum Test neuer Features der sQLshell gibt, sondern fast jeder Hersteller inzwischen solche Beispiele anbietet. Ich entschied mich - auch weil ich testen wollte, wie plattformunabhängig/plattformübergreifend JPA wirklich funktioniert - für zwei Beispieldatenbanken von Herstellern: chinook von SQLite und BikeStores von MSSQL Server (Anweisungen zum Import hier, weitere Beispiele zum Beispiel hier ).

Ich wollte nicht bei Null anfangen und fand ein Repository, auf das ich mit meinen Experimenten aufbauen wollte - allerdings ging das schief: Erstens war das Repository ein wenig veraltet (Hibernate-Version 3.5) und zweitens fand ich noch einige Ungereimtheiten, die ich zunächst fixen musste bevor ich daran denken konnte mit Tests zu beginnen. Ich entschied mich daher, das Repository nicht zu klonen, sondern durch es inspiriert nochmals auf der grünen Wiese zu beginnen.

Meine Versuche, ein Projekt oder Werkzeug zu finden, das mir für ein bestehendes Schema die entsprechenden Entity-Klassen generieren würde schlugen ebenfalls fehl. Sicher - es gibt diverse Projekte, die von sich behaipten, genau das zu können. Allerdings stellte sich bereits bei den nicht sehr großen Modellen die ich zum Test benutzte heraus, dass diese Werkzeuge versagten - nicht nur Third-Party-Versuche wie jpa-entity-generator, sondern sogar hibernate-tools.

Als ich an dem Punkt angekommen war überlegte ich, dass ich ja die Infrastruktur besitze, solche Funktionalität selber zu schaffen - ich hatte für die sQLshell bereits Plugins geschaffen, die HTML-Dokumentation ausgehend von einer Tabelle für ein ganzes Schema erstellten.

Wenn ich auf derselben Grundlage statt HTML Java-Quelltest erzeugen würde, müsste ein Plugin zur Erzeugung von Entity-Klassen eigentlich machbar sein. Ich definierte noch schnell meine Anforderungen an ein solches Projekt:

  • Ausgehend von einer Tabelle Entity Klassen für alle mit dieser mittelbar oder unmittelbar über Fremdschlüsselbeziehungen verbundenen Tabellen erzeugen
  • Keine händische Nacharbeit nötig
  • Many-To-One und One-To-Many Relationships werden abgebildet
  • Many-To-Many Relationships werden abgebildet
  • Für Informationszwecke Inmdexinformationen extrahieren und generieren, allerdings als Java-Kommentare

Im Projekt jpa-sQLshell-tests kann man den aktuellen Stand einsehen. Derzeit habe ich ein Modell gefunden, das ohne Nacharbeit nicht kompilierfähig ist - daran arbeite ich gerade. Der nächste Schritt ist, für jedes der Modelle entsprechende Tests zu implementieren, die die einzelnen Features (Relationships) prüfen.

Hier noch einige Links, die ich während des Prozesses interessant fand:

Aktualisierung vom 13. April 2022

Das Plugin hat einige größere Überarbeitungen erfahren und ist jetzt in der Lage, Vererbungen über joined tables zu erkennen und entsprechend zu modellieren. Dadurch sind in der Liste auch wieder neue Ressourcen und Links dazugekommen...

Artikel, die hierher verlinken

M-zu-N-Beziehungen und JPA

05.04.2022

Ich habe bereits darüber berichtet, dass die sQLshell ein neues Plugin anbietet, das aus bestehenden Datenmodellen in Datenbanken JPA-Entityklassen generieren kann.

Exportieren eines Reports im Textformat

16.01.2021

Ich habe nach meinem letzten neuen Plugin für die sQLshell bereits wieder ein neues im Angebot - dieses Mal im Bereich Reporting

sQLshell Version 7.1pre6 build 8896

03.01.2021

Eine neue Version der sQLshell ist verfügbar!

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Testdatengeneratoren als Microservices mit Docker

    02.11.2019

    Ich habe die verschiedenen Testdatengeneratoren mittels Microservices über HTTP zugänglich gemacht, um sie unabhängig von der verwendeten Programmiersprache und/ oder Version (Java 11) verwenden zu können.

    Weiterlesen...

Neueste Artikel

  • Generator für syntaktisch korrekten Python Code

    Nachdem es nun bereits seit einiger Zeit ein wenig stiller um meine diversen Generatoren für Testdaten geworden ist, habe ich über den Feiertag in Thüringen einen neuen begonnen.

    Weiterlesen...
  • ethersyncj - Java Bindings für Ethersync

    Ich wurde über einen Post auf Mastodon auf ein Projekt aufmerksam, das mir so interessant erschien, dass ich daraus meine neueste Fingerübung machte...

    Weiterlesen...
  • sQLshell Version 7.7pre8 build 10681

    Eine neue Version der sQLshell ist verfügbar!

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.