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

  • Fährnisse des Buildprozesses unter Windows

    17.07.2019

    Nachdem ich begonnen hatte, mich mit der Beschleunigung der Berechnung des Mandelbrot-Fraktals unter Zuhilfenahme der Shadereinheiten in Graphikkarten zu beschäftigen und erste Erfolge feiern konnte, wollte ich das mal auf einer richtigen Graphikkarte ausprobieren...

    Weiterlesen...

Neueste Artikel

  • Datenvalidierung UTF8 mit BiDi-Steuerzeichen (TrojanSource 2.0)

    Ich bin heute nochmal inspiriert worden, weiter über die Trojan Source Vulnerability nachzudenken. Meiner Meinung nach bestehen hier noch Probleme - speziell bei Nutzereingaben oder Daten, die über externe Schnittstellen ampfangen werden.

    Weiterlesen...
  • OpenStreetMap Navi als Docker-Container

    Ich habe die auf OpenStreetMap basierende OpenSource Navigationslösung Graphhopper in einen Docker-Container gepackt und als neuestes Mitglied in meinem Docker-Zoo willkommen geheißen.

    Weiterlesen...
  • SQL-Aggregatfunktionen in SQLite als BeanShell-Scripts

    Ich habe neulich über eine Möglichkeit berichtet, SQLite mittels der sQLshell und Beanshell-Skripten um SQL-Funktionen zu erweitern. In diesem Artikel versprach ich auch, über eine solche Möglichkeit für Aggregatfunktionen zu berichten.

    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.