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


Neueste Artikel

  • Github hat keine Ahnung von Crypto und Sicherheit

    Morgen - am 1.2.2023 - soll mein neuer $dayjob anfgangen - und damit die Quelle, aus der ich die Mittel beziehe, weiterhin meine Kuchenzutaten bezahlen zu können. Das wird irgendwas mit Sicherheit sein. Und am Tag davor hat sich - wer eigentlich genau? - überlegt: "Komm, lass ihn uns nochmal so richtig auf Betriebstemperatur überkochen!". Aber - der Reihe nach...

    Weiterlesen...
  • Aktualisierung TileServer - Restrukturierung

    Ich habe meinen Tile-Server für OpenStreetMap-Daten aktualisiert

    Weiterlesen...
  • Drunken Bishop in Java

    Ich habe neulich wieder einmal Lust auf eine kleine Fingerübung gehabt und deshalb ein Verfahren in Java implementiert, das ich ursprünglich als Möglichkeit kennenlernte, zwei Schlüssel beim Versuch des Aufbaus einer Verbindung mittels SSH zu vergleichen...

    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.