Spring Data JPA vs. Spring Data JDBC

Spring Data JPA (im Folgenden: JPA) ist im Abstraktionsgrad über Spring Data JDBC (im Folgenden: JDBC).

Mit JDBC müssen eigene Abfragen in SQL geschrieben werden, die „result sets“, also die zurück gelieferten Daten, müssen selbst geparst werden und sollen aus Objekten datenbank-konforme, ggf. relationale Daten oder aus diesen Daten wieder Objekte erstellt werden, muss auch das per Hand erfolgen. Das bedeutet unter anderem, man muss die SQL der jeweiligen Datenbank kennen.
Bei wenigen Datenbank-Aktionen ist JDBC eine große Erleichterung verglichen mit den noch weniger abstrahierten Zugriffen über direkte Sockets und der direkten Verwendung des jeweiligen Datenbank-Drivers.
Diese beiden Varianten sind die beiden schnellstmöglichen Wege, Datenbank-Zugriffe mit Java zu erreichen.

Mit JPA wird eine weitere Abstraktion hinzu gefügt. Über Entities (Objekte) werden Einträge in einer Datenbank (Tabellen und Felder) über Annotationen in den jeweiligen Klassen den Objekten und deren Eigenschaften zugeordnet. Mit Spring wird dazu ein Repository verwendet, eine Klasse, die sich um die CRUD-Operationen (create, read, update, delete) der jeweiligen Entity-Klasse kümmert.

Test driven development

Between too low and too slow – test modules!

Ein Modul:
– kann eine bis mehrere dutzend Klassen umfassen
– kapselt seine Daten (access only via API)
– hat klar definierte Co-Worker / „collaborators“ und APIs
– umfasst (fast) alle Software-Schichten (vertical slicing)
– erinnert an einen Microservice bzw. ist ein guter Kandidat dafür, einer zu werden
– arbeitet in einem begrenzten Kontext, d.h. Worte haben ihre eigenen Definitionen bzw. Klassen

DAG, Blockchain und die Kombis a la Radix & Co.

DAG, DAG, DAG, die Entenfamilie weiß Bescheid!
Merken: Directed Acyclic Graphs, ein „blockless distributed ledger“

Bei CryptoCandor finden sich eine Menge Informationen. Die gute Dame spricht schnell, macht aber vieles verständlich:

Vergleich zwischen Blockchain und DAG

DAG scaling issues & Aims of Radix

WordPress…

…umziehen in einen Docker-Container, Datenbank ebenso in einen Docker-Container wechseln und dabei gleich auf mariadb switchen.

Und dann ist das Einloggen in mein WordPress 5 buggy! Die Lösung erstmal per docker exec -it mariadb mysql -p:

  • mysql> DESCRIBE wp_wfBlocks7;
  • mysql> ALTER TABLE wp_wfBlocks7 CHANGE id id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT;
  • mysql> DESCRIBE wp_usermeta;
  • mysql> ALTER TABLE wp_usermeta CHANGE umeta_id umeta_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT;

Einloggen geht wieder, in meinem jahrealten WordPress.
Und das WordPress-Update auf 5.2.3? „WordPress aktualisieren. Momentan wird eine andere Aktualisierung durchgeführt.“ Echt jetzt?

  • mysql> DESCRIBE wp_options;
  • mysql> SELECT DISTINCT(option_id) FROM wp_options ORDER BY option_id;
  • mysql> SELECT * FROM wp_options WHERE option_id=0;
  • mysql> UPDATE wp_options SET option_id = option_id +1 ORDER BY option_id DESC;
  • mysql> ALTER TABLE wp_options CHANGE option_id option_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT;

Und Beiträge schreiben?

  • mysql> ALTER TABLE wp_posts CHANGE ID ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT;
  • mysql> UPDATE wp_postmeta SET meta_id = meta_id +1 ORDER BY meta_id DESC;
  • mysql> ALTER TABLE wp_postmeta CHANGE meta_id meta_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT;
  • mysql> UPDATE wp_terms SET term_id = term_id +1 ORDER BY term_id DESC;
  • mysql> ALTER TABLE wp_terms CHANGE term_id term_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT;

Durch die Aufteilung der früheren Tabellen categories, post2cat, und link2cat in wp_terms (den Termini), wp_term_taxonomy (Zuordnung der Termini zu  Beitrags-Tags, Beitragsformaten bzw. Beitrags-Kategorien) und wp_term_relationships (Zuordnung der Beiträge zu den entsprechenden Termini) ist hierbei Unordnung eingezogen, die manuell zu bereinigen war.

Dann noch ein echo „# BEGIN WordPress“ > .htaccess ins root-Verzeichnis und im WordPress-Dashboard unter „Einstellungen“ die Permalinks-Einstellungen gewechselt und zurück gewechselt – dann funktionieren die auch wieder…

IT Ab use

Bezüglich meiner Urteilsfähigkeit muss ich ein bisschen aufpassen. Was ich in den letzten fünf Jahren an mangelnder Flexibilität und zeitfressendem Ping-Pong ohne tragfähige Lösungen erlebte und noch erlebe trotz – oder gerade wegen – dem Einsatz etablierter Systeme und Konstrukte, hat mich erneut geprägt. Wir waren davor auf einem weitaus besseren Weg. Und dazu waren nicht nur „unter anderem“, sondern „vor allem anderen“ auch Regelungen durch Lizenzbeschränkung bis hinunter zu Funktionsfehlern durch das zwanghafte Einprogrammieren der Lizenz-Beschränkungen ursächlich.

Ein weiterer Teil liegt zusätzlich auch an der Entwicklung der IT insgesamt. Die wir bisher so alle prägten und so förderten, wie sie sich entwickelte.

In diese Sackgassen möchte ich mit keinem neuen Aufbau kommen. Systeme, die Windows voraussetzen, setzen eben ein Windows voraus, das zum weiteren Systemaufbau mit Windows zwingt. Soll so ein Kreislauf projektiert werden, werde ich administratorisch nicht dafür verantwortlich sein.

Das geht auch nicht, da ich gleichzeitig Datenschutzbeauftragter bin und mit Windows und dem Einsatz anderer Software aus amerikanischen Schmieden kein Datenschutz mehr möglich ist (gesetzlich geregelt seitens der USA durch den Cloud-Act seit März letzten Jahres). Bekommen wir Lösungen auch ohne Windows-Systemzwang hin, sind nicht in Deutschland ansässige IT-Firmen dennoch nicht mehr deutscher Gesetzgebung unterworfen. Bei Privatisierung von Wasser und Häfen durch Chinesen schreit jeder laut auf, in diesem Bereich nicht, da fördern wir das nur immer weiter.
Zudem lässt ein Vendor-Lock-In keinen eigenen Verantwortungsspielraum mehr frei, keiner deutschen Firma, keiner Regierung. Amerika kann Europa jetzt schon einfach jederzeit abschalten. Allein dass uns das allen bewusst ist und wir dennoch nichts an unserem täglichen Handeln ändern, finde ich mindestens befremdlich. Das ist ein großer Unterschied zum Zusammenbruch der Weltwirtschaft: Systeme „stromlos“ setzen können auch Terroristen und die USA mauserte sich zum beliebtesten Ziel. Terroristen im Sinne einer Oligarchie von Irren im Gegensatz zu Handlungen im Konsens breiter Massen, gegen die auch ein Präsident der USA nicht ankommt.

Ich fürchte mich weniger davor, dass wir ein technisches Versagen – gerade bei Open-Source mithilfe einer ungeregelten und somit ungesteuerten Community – nicht wieder hin bekommen, als davor, dass unser Handeln die Grundlage eines vernichtenden Urteils der kommenden Generationen über uns bildet. Und ein Erwachen aus selbstverschuldeter Grausamkeit, in der liebe Omas und Opas kleine Rädchen waren, die die Grausamkeit sogar ohne eigenem vermehrten Nutzen und unwillentlich förderten – repetitio non placet. IT und Menschlichkeit schließen sich logisch eh schon in weiten Bereichen aus. Computer müssen z. B. nie auf Toilette…

Manche Entwicklungen dürfen und sollten wohl länger dauern und müssen vielleicht auch teilweise schmerzlich sein, wenn nur die „Community“ daran wächst. „Community“ ist immerhin noch der Begriff für eine menschliche Interessensgemeinschaft, ggf. sogar eine nahe an der griechischen Demokratie wie Communities im Internet. Oder für die Belegschaft einer Firma. Oder für die Bürger eines Staates. Oder für die schrumpfende Gemeinschaft an genug ausgebildeten Fachkräften in Deutschland, die die überlebensnotwendigen Werkzeuge um uns herum noch verstehen, beherrschen und eingreifen können.

Die Sicherheit eines langjährig eingesetzten Systems liegt meiner Ansicht nach aber nicht nur in der Technik und der Software dahinter allein begründet.

Entscheidungsgewalt haben die, die sich überhaupt noch dazu trauen, in Deutschland ein Unternehmen zu führen. Da gibt es eben auch vieles zu bedenken, bevor die Späne fallen.

Mein Leben als Datenschutzbeauftragter o. b. B.

– ein Netzwerk, das man vergrößert, hat eine größere Angriffsfläche.

– mehr Verantwortliche bedeuten auch mehr Zugriff auf Firmendaten. Unter vielem anderen kann auch der Inhalt der für die internen Mitarbeiter geschützten Verzeichnisse von externem, philosophisch-moralisch ungeschultem und weder Ihrer noch unserer Firma sonderlich verbundenem IT-Fachpersonal eingesehen werden.

– von den Angestellten und dem Chef unbemerkte, direkte Zugriffe durch Personal externer Teams auf unsere Systeme können definitiv niemals ausgeschlossen werden, wenn das Intranet kein Inhouse-Netzwerk ist.

– bei allen externen Teams gibt es ebenfalls Mitarbeiter-Fluktuation jenseits jeder Einschätzungsmöglichkeit der Risiken für Folgeschäden aus Sicht der Geschäftsführung.

– die immer fähigere Hardware, die unter unseren virtuellen Systemen liegt und diese vernetzen, kommt aus Ländern mit diktatorischem Regime, die komplett konträre Interessen zu unseren haben.

– auch Venenscanner können schon mit Bienenwachs-Händen überlistet werden (usw. usw.), IT-Sicherheit ist ein Fachgebiet mit sehr kurzlebigen Lösungen.

– Cloud-Systeme sammeln Dienste, offene Ports und vielzählige Software-Konstrukte mit Millionen Zeilen Code und sind deswegen lohnende Ziele.

– die Betriebssysteme, die wir momentan einsetzen, werden von mehreren Regierungen als hoch unsicher eingestuft und jeder ist sich des Verstoßes gegen das Datenschutzgesetz durch den – aus europäischer Sicht irländischen – Softwarehersteller bewusst, der zudem am wenigsten an einem gesunden, staatstragenden Wirtschaftskreislauf interessiert ist, da er wie alle großen IT-Unternehmen quasi staatenlos geworden ist.

– gleichzeitig sind alle Daten, die mithilfe von Codezeilen aus den USA gespeichert wurden, unter dem direkten Zugriff der amerikanischen Regierung und Herrn Trump – seit März letzten Jahres sogar hochoffiziell gesetzlich geregelt mit dem „Cloud-Act“.

– die Ausbildung von international gleichwertigen Fachkräften wurde in Deutschland auf breiter Front vernachlässigt, weswegen man auf der Hannover-Messe viele „Innovationen“ sieht, die bereits von Kindern, die zum Lego-Spielen fähig sind, „programmiert“ werden können – natürlich im von IT-Fachkräften vorgegebenen Rahmen. Das führt immer mehr dazu, dass Menschen Maschinen und Computer bedienen, ohne ausreichend ausgebildet zu sein, diese zu verstehen und in der Lage zu sein, Herrschaft über diese zu gewinnen. Das macht aus manchen IT-Fachkräften, die viele andere IT-Fachkräfte an ihren Fäden spielen lassen, Götter der restlichen Menschheit (allerdings eher die griechische „Götter“-Version).

Auch gesellschaftlich gesehen „Im Westen nichts Neues“: die IT profiliert sich zum überlebensnotwendigen Werkzeug, weil wir Regierungen fördern, die am Arbeitsplatz interessiert sind und nicht am Menschen – mit dem Erfolg, dass der diplomatische Status und der zusätzliche Aufschlag auf das Gehalt, das gegen Bestechlichkeit helfen soll, langsam von Politikern und systemimmanenten Monopolstrukturen auch auf IT-Fachkräfte ausgeweitet werden.

„Hooray!“

Warum freie, unixähnliche Mehrbenutzer-Betriebssysteme schön sind…

…und Microsoft Betriebssysteme Menschen unglücklich machen, lässt sich leicht begründen.

Meinen Hintergrund bilden dabei über viele Jahre mehrere selbstadministrierte und fremdadministrierte Microsoft-Domänen mit verschiedenen MS-Server-Betriebssystemen und Serverdiensten sowie eigene und fremde Linux-Betriebssysteme mit einer Vielzahl an Techniken und Diensten.

Immer wenn ich an und mit Linux arbeite, werde ich glücklich. Es ist nicht alles Gold, was glänzt – aber durch Arbeit und Analyse des jeweiligen Konglomerats an Problemen konnte in den vergangenen annähernd zwei Jahrzehnten alles gelöst werden, was sich an Problemen gestellt hat. Dabei läuft mein ältestes, öffentliches Linux-System seit 2004. Durchgängig. Natürlich auch mal mit Hardware-Ausfällen und stundenlanger Neukonfiguration durch Schusseligkeit oder auch Unwissenheit.

Was macht daran glücklich?

Ich hatte nie das Gefühl, dabei eine Minute zuviel an Lebenszeit in die Lösung von Problemen gesteckt zu haben. Selbst wenn ich mehrere Tage am Stück investieren musste. Diese Investitionen waren sowohl kurz-, mittel- als auch langfristig jederzeit proportional zum „return of investment“: mit Linux kumuliert sich das Wissen um die innersten Vorgänge in der großen, vielfältigen und „schnelllebigen“ Welt der IT. Es bleibt kompromissbereit logisch – die Community will es so; nicht der schnelle Rubel oder der größte Dickkopf zählen, sondern jeweils eine grundsolide Basis, auf die man sich gemeinsam einigt und mit der auch nach Jahren noch weiter gearbeitet werden kann.

Dennoch schneide ich Filme unter MacOS X, genau wie mir Serato DJ und Ableton Live auf OS X ans Herz gewachsen sind. Das sind schöne Endanwender-Programme auf einem stabilen, unixähnlichen Mehrbenutzer-Betriebssystem, wobei sich dabei auch mehrere Systeme verketten lassen, um z.B. schneller gemeinsam zu rendern uvm. Richtige Gurus setzen auch da auf Open-Source…

Ich habe auch mehrere Windows-Betriebssysteme – als Desktop, privat und als Desktop und Server, beruflich – in der Administration und im Betrieb. Bestimmte Software-Hersteller sind noch nicht willens oder oft auch einfach nicht in der Lage, Software plattformunabhängig zur Verfügung zu stellen.

Microsoft änderte sich in den letzten fünf Jahren jedoch – das kommt in Deutschland nur noch nicht bei den „Microsoft-Fachleuten“ an. Microsoft hat sich unter Satya Nadella, dem amtierendem Microsoft-CEO, von den Einstellungen des „Kriegsgenerals“ Bill Gates, dem Microsoft-Manager und späteren Nokia-Boss Stephen Elop („We will disrupt other systems!“) und vielen weiteren Alphatierchen und Unsympathen, die ihre beschränkte Weltsicht über die Schwarmintelligenz stellen, entfernt, weiterentwickelt und ordentlich in die Open-Source-Welt investiert.

Auch deutlich ist nach Jahren in Kooperation mit vielen externen Teams: arbeite ich mit einer open-source-affinen Fachfrau oder deren männlichen Pendant zusammen, ist es einfacher, sich zu verstehen, einfacher, miteinander zu kommunizieren und effektiver, gemeinsam Lösungen zu entwickeln. Die alten MS-Ressentiments stecken bei den Microsoft-Puristen so tief im Kopf wie in der momentan in Deutschland – und Brüssel! – noch auf breiter Front eingesetzten Software.

Dabei entsteht hier ein Teufelskreis: die Grenzen, die die Software-Pakete von Microsoft dem jeweils zuständigen Fachpersonal bei der Lösung von Problemen stecken, sowie auch die erweiterte Komplexität und vermehrte Fehleranfälligkeit durch den Overhead von Lizenzkontroll-Mechanismen frusten sowohl die Benutzer dieser Software-Pakete als auch das Fachpersonal, das Schwächen und Bugs ausbügeln, die Software über Jahre warten und individuelle Funktionen und benutzerfreundliche GUI-Lösungen integrieren soll.

Dabei bin ich noch gar nicht zu den Aspekten der Microsoft-Software gekommen, die klar geltendes deutsches und europäisches Recht brechen oder umgehen, sei es bei der Steuerpolitik oder bei Verordnungen zum Datenschutz. Oder den Schwächen, die die Ausbildung nicht nur des deutschen Fachpersonals betreffen: die Aussage, dass Informatiker vor 25 Jahren leistungsfähiger waren als in den letzten zwei Jahrzehnten, was  zielgerichtete Problemlösungen anhand einer intelligenten Auswahl der jeweils passendsten Werkzeuge anbelangt, hat Microsoft verschuldet.

Diese traurige Realität wird erst in den letzten Jahren durch die vielfältigen Web- und Smart-Device-Techniken langsam wieder verbessert. Allerdings basieren sehr viele fundamentale Lösungen im Intranet deutscher Firmen noch auf dem schwachen Unterbau in die Jahre gekommener Microsoft-Server-Betriebssysteme – und die lassen sich bekanntlicherweise „traumhaft“ upgraden, ebenso wie die Anwendungen selbst.

Das hat nicht nur Auswirkungen auf die Schönheit der IT. Neben den Schwierigkeiten mit unseren Behörden und den Schwierigkeiten unserer Behörden mit den modernen Werkzeugen der Informationstechnologie hängen daran unter vielem anderen auch die Nullen und Einsen hinter Planung, Organisation und Ausführung in Bezug auf Flughäfen, Bahnhöfen, Kraftfahrzeugen und TÜV-Zertifikaten für einstürzende Brücken. Also doch nicht nur die zurecht besudelten Namen der über alle Maßen entlohnten Vorstands-Großkopferten…

Und wohin man schaut – der überwiegende Teil der nachwachsenden ITler fährt auch im Jahr 2019 das SmartBook, Notephone oder den heimischen Desktop hoch und schaut dem Windows-Kreisel, der den lizenzpflichtigen Ladebalken zumindest beim trägen Systemstart der Boliden abgelöst hat, alternativlos zu.

Ich habe Microsoft lange Jahre gehasst – und das war keine Hassliebe. Mittlerweile bin ich jedoch konsequent in der Liebe zu meiner Berufung zur IT. Auch um die alten Microsoft-Boliden lässt sich schöne Software drumrum bauen, wenn ewig Gestrige darauf bestehen, Zeit, Geld und die Nerven der Benutzer völlig unnötig zu verschwenden. Und schließlich gibt es genug Anhänger der „alten“ Microsoft-Gläubigkeit, die die boilerplate code & configuration und die damit verbundenen Sisyphusaufgaben übernehmen. Eigentlich sind für Fließbandarbeiten dieser couleur ja mal Computer entwickelt worden 🙂

jhipster und der Springframeworkguru

Wärmste Empfehlungen für tolle Technik: JHipster und für tiefes Verständnis des Springframeworks John Thompson. Bei JHipster finden die clientseitigen Webframeworks Angular oder React Verwendung, der Springframeworkguru John Thompson arbeitet in seinen Schulungsvideos mit der serverseitigen thymeleaf-Interpretation.

Und immer an die Sicherheit und Wartbarkeit nicht nur der Programmierungen, sondern auch der darunter liegenden Technologiestacks denken. Von getrennten Serverdiensten in Containern bis ganz runter hin zu den chinesischen und taiwanesischen elektronischen Fischernetzen in den Integrierten Schaltkreisen.

Ist Full-Service-Development nicht ein spannendes und interessantes Berufsbild? Aber sicher!

Meine Basteleien finden sich auf GitLab und GitHub – und die ganz privaten Sachen auf meinem gogs-Server.

Hier noch der Link zum recht aktiven Springframeworkguru-Slackchannel