Java >> Java Tutorial >  >> Java

Hochleistungs-Java-Persistenz von Vlad Mihalcea

Hallo Vlad,

Erzählen Sie mir ein wenig über sich.

Hallo Petry. Mein Name ist Vlad Mihalcea und ich arbeite als Developer Advocate für das Hibernate-Projekt.

Viele Leute wissen es vielleicht aufgrund Ihrer Arbeit als Hibernate Developer Advocate,
aber ich weiß, dass Sie schon viel länger daran interessiert sind, robusten Datenzugriffscode zu schreiben.
Was ist los? Was fasziniert Sie an Datenzugriffscodes?

Ich mag alles an Daten:Relationale Datenbanksysteme (z. B. Oracle, SQL Server, PostgreSQL, MySQL),
NewSQL (z. B. VoltDB), NoSQL (z. B. RocksDB), Caching-Lösungen (z. B. Infinispan, Hazelcast).

Das Datenökosystem ist sehr vielfältig, was es zu einer sehr attraktiven Wahl für einen Softwareentwickler macht.

Der Grund, warum ich mich entschieden habe, in die Optimierung der Datenzugriffsleistung zu investieren, ist, dass dies den Unterschied zwischen einer hochleistungsfähigen Unternehmensanwendung und einer Anwendung ausmachen kann, die kaum crawlt.

Was ist der häufigste Fehler, den Entwickler machen, wenn sie die Datenzugriffsebene ihrer Anwendungen entwerfen und implementieren?

Ich habe tatsächlich einen Blogbeitrag (14 High-Performance Java Persistence Tips), der einige der häufigsten leistungsbezogenen Probleme veranschaulicht.

Meiner Erfahrung nach besteht das häufigste leistungsbezogene Problem darin, zu viele Daten abzurufen, wenn der aktuelle Geschäftsanwendungsfall stattdessen nur eine Teilmenge benötigt.

Protokollierung und Überwachung sind von größter Bedeutung, wenn es um die Leistungsoptimierung geht, da sich die Datenzugriffsmuster ständig ändern, was durch die Entwicklung eines Unternehmenssystems vorangetrieben wird. In diesem Zusammenhang besteht ein sehr häufiger Fehler darin, zu vermeiden, zu überprüfen, welche SQL-Anweisungen vom zugrunde liegenden JPA-Anbieter generiert werden. In dem Moment, in dem Sie wissen, welche SQL-Anweisungen mit einer bestimmten Entitätszuordnung verknüpft sind, können Sie besser entscheiden, wie das Domänenmodell gestaltet werden soll.

Vor einiger Zeit haben Sie Ihr erstes Buch mit dem Titel "High-Performance Java Persistence" fertiggestellt. Warum haben Sie sich entschieden, es zu schreiben, und welches Problem löst es?

Wenn es um den Datenzugriff geht, ergeben sich viele Probleme aus den unterschiedlichen Fähigkeiten der Softwareentwickler.
Die überwiegende Mehrheit der Softwareentwickler verfügt über sehr gute objektorientierte Programmierkenntnisse,
während SQL- und Datenbankkenntnisse oft übersehen werden.

Aus diesem Grund werden das Domänenmodell und die Geschäftslogik oft aus einer OOP-Perspektive entworfen
während die Datenzugriffsmuster ignoriert werden, die hinter den Kulissen passieren.

Genau aus diesem Grund habe ich mich entschieden, "High-Performance Java Persistence" zu schreiben.

Ich habe festgestellt, dass viele Leute nach alternativen Wegen suchen, um ihre Repositories zu implementieren. Was ich meine ist, dass die Leute ORMs durch einfaches altes JDBC zu ersetzen scheinen. Haben Sie irgendwelche Gedanken dazu?

Am Ende ist es alles JDBC. JDBC allein reicht jedoch nicht aus, da Sie beim Ausführen von Transaktionen auf Anwendungsebene Kontrollmechanismen für die Parallelität auf Anwendungsebene benötigen, und deshalb ist Hibernate eine hervorragende Wahl für Webflows mit mehreren Anforderungen.

ORMs und JPA eignen sich sehr gut zum Schreiben von Daten, da Änderungen automatisch von Entitätsstatusübergängen weitergegeben werden. Zum Lesen von Daten ist jedoch natives SQL der richtige Weg.

Alles in allem denke ich, dass das Mischen von JPA mit einem Query-Builder-Framework wie jOOQ die beste Kombination für Ihre Datenzugriffsebene ist.

Vielen Dank für Ihre Zeit!

Danke Vlad!


Java-Tag