Seit dem großen 6.0-Release hat sich bei Hibernate dank Embeddables der Umgang mit Java Records stark verbessert. Und es gibt weitere nützliche Ergänzungen.
Vor einiger Zeit hat Hibernate ORM 6.0 viel Aufmerksamkeit erhalten, weil die Migration einige Anpassungen wegen inkompatibler Änderungen der Jakarta Persistence API 3.0 erforderte. Wer erwartet hatte, dass es danach wieder ruhiger um das beliebte Persistenz-Framework wurde, liegt falsch.
Seitdem hat das Hibernate-Team eine Vielzahl an Verbesserungen veröffentlicht. Inzwischen liegt die Version 6.4 des Frameworks vor, und es ist an der Zeit, sich die wichtigsten Verbesserungen genauer anzuschauen., fragen sich viele Entwicklerinnen und Entwickler, wie sie Records mit Hibernate verwenden können. Für unveränderliche Datentypen scheint es eine Vielzahl von Anwendungsfällen zu geben. Die offensichtlichsten sind Abfrageergebnisse, unveränderliche Entitätseigenschaften oder sogar vollständig unveränderliche Entitäten. Leider lässt es die JPA-Spezifikation nicht zu, Records als Entitäten zu verwenden . Laut Spezifikation muss eine Entitätsklasse eine nicht finale Klasse sei, die über einen parameterlosen Konstruktor verfügt und der Bean-Spezifikationen entspricht. Das bedeutet vereinfacht, dass die Entitätsklasse Getter- und Setter-Methoden für alle Eigenschaften bereitstellen soll. Da das bei einem Record nicht gegeben ist, lässt er sich nicht verwenden, um eine unveränderliche Entität zu modellieren.Bei einem Embeddable handelt es sich um eine Klasse, die als wiederverwendbare Komponente mehrere Eigenschaften mit den zugehörigen Spaltenabbildungen umfasst. Im Gegensatz zu einer Entität verfügt ein Embeddable jedoch über keinen eigenen Lifecycle und kann ausschließlich als Eigenschaftstyp innerhalb einer Entität verwendet werden. Laut JPA-Spezifikation ist es für Embeddables ähnlich wie für Entitäten nicht erlaubt, sie als Records zu implementieren. In älteren Versionen galt diese Einschränkung auch für Hibernate. Das Hauptproblem lag darin, dass ein Record nicht über den von Hibernate erwarteten, parameterlosen Konstruktor verfügt.public class AddressInstantiator implements EmbeddableInstantiator { Logger log= LogManager.getLogger.getName); public boolean isInstance { return object instanceof Address; } public boolean isSameClass { return object.getClass.equals; } public Object instantiate { // valuesAccess enthält die Eigenschaftswerte // in alphabetischer Reihenfolge! final String city= valuesAccess.getValue; final String postalCode= valuesAccess.getValue; final String street= valuesAccess.getValue; log.info; return new Address; } }auf. Innerhalb der Methode lassen sich ein beliebiger Konstruktor und weitere Methoden aufrufen, um das Embeddable zu erzeugen. Dabei ist zu beachten, dass der Supplier Zugriff auf die Eigenschaftswerte nur in alphabetischer Reihenfolge der Eigenschaftsnamen bietet. Um die Lesbarkeit und Wartbarkeit der-Implementierung zu verbessern, empfiehlt es sich daher, vor dem Aufruf des Konstruktors die Werte in sinnvoll benannten, lokalen Variablen abzulegen.anwendungsweit für alle Instanzen eines Embeddable oder für jede Instanz individuell erfolgen. Das folgende Beispiel zeigt die anwendungsweite Registrierung deswie ein als Klasse implementiertes Embeddable verwenden. Dabei ist lediglich zu beachten, dass ein Record unveränderlich ist. Somit kann eine Anwendung die durch das Embeddable abgebildeten Werte nur ändern, indem sie das Record ersetzt.Mit der Version 6.2 hat das Hibernate-Team die Implementierung von Embeddables als Records noch einmal deutlich vereinfacht. Da ein Record nur über einen Konstruktor verfügen kann, ermittelt Hibernate ORM den Konstruktor und verwendet ihn, um das Embeddable zu erzeugen. Es ist somit nicht mehr erforderlich, einenfindet dieses Jahr vom 9. bis 11. April erstmals am Nürburgring statt. Die Hauptkonferenz der Jubiläumsausgabe bietet rund 140 Vorträge zu den jüngsten und den kommenden Entwicklungen rund um Java und Jakarta EE. Daneben stehen der Einsatz von KI und das Zusammenspiel mit anderen Programmiersprachen auf der Agenda. Der Autor dieses Artikels Thorben Janssen hält auf der Konferenz einen Vortrag zu den Neuerungen in Hibernate 6. Die JavaLand-Veranstaltung ist eine Community-Konferenz für Java-Entwickler und wird durchgeführt von der Deutschen Oracle-Anwendergemeinschaft und Heise Medien in Zusammenarbeit mit dem iJUG, dem Interessenverbund deutschsprachiger Java User Groups.steht weiterhin zur Verfügung. Man kann es unter anderem verwenden, um das Erstellen eines als Java-Klasse implementierten Embeddable an die eigenen Bedürfnisse anzupassen. Hierbei unterscheidet sich das Vorgehen grundsätzlich nicht von der gezeigten Implementierung einesFür dieses Feature gab es allerdings auch viel Kritik, weil die Lesbarkeit der Abfrage unter dem vollreferenzierten Klassennamen leidet. Darüber hinaus ist die Auflistung aller Konstruktorparameter bei großen Objekten schlecht wartbar. Eine Neuerung in Hibernate 6 verbessert zumindest das Problem der Lesbarkeit. Nun reicht es aus, den Record als Rückgabetyp der Abfrage zu benennen und die Werte in der Reihenfolge zu selektieren, wie sie an dessen Konstruktor übergeben werden sollen.Auch wenn diese Abfrage besser lesbar ist, bleiben die Wartbarkeitsprobleme gerade bei der Instanziierung großer Records weiterhin bestehen. Daher ist vor allem bei Records Vorsicht geboten, deren Konstruktor mehrere, aufeinanderfolgende Parameter desselben Typs erwartet. Hier besteht ein hohes Fehlerrisiko, da sich eine falsche Parameterreihenfolge erst beim Überprüfen eines erzeugten Records zeigt.
Deutschland Neuesten Nachrichten, Deutschland Schlagzeilen
Similar News:Sie können auch ähnliche Nachrichten wie diese lesen, die wir aus anderen Nachrichtenquellen gesammelt haben.
Neues Studio, alte Strahlkraft: 'Let's Dance' kehrt stark zurückDer Auftakt in die neue 'Let’s Dance'-Staffel war ein voller Erfolg für RTL: Rund vier Millionen Menschen sahen die 'Wer tanzt mit wem?'-Ausgabe. Die Primetime-Konkurrenz aus Unterföhring hatte dagegen große Probleme.
Weiterlesen »
Neues Rentenpaket der Ampel: So stark steigen die Renten-BeiträgeDie Debatte um die Rente mit 70 gewinnt an Brisanz. Experten sehen in der Anhebung des Renteneintrittsalters eine notwendige Maßnahme, um das deutsche Rentensystem vor dem Kollaps zu bewahren.
Weiterlesen »
Java-Entwickler gesucht: Unternehmen planen 2024 mehr Developer einzustellenEine neue Studie fördert zutage, dass Java-Entwickler gesucht werden. Auch gewinnen Developer Productivity Teams an Bedeutung und können Entwickler entlasten.
Weiterlesen »
„Traurige Vergangenheit“: Katzentrio sucht „verzweifelt neues Zuhause“Bevor du dich in das Abenteuer Katzenbesitz stürzt, stellen wir dir in diesem Video 10 entscheidende Fragen, die sicherstellen, dass du und deine zukünftige Samtpfote perfekt zueinander passen
Weiterlesen »
Erstes Familienfoto: Vierfach-Mama Gal Gadot zeigt ihr neues BabyEin erstes Familienfoto zu sechst: 'Wonder Woman'-Star Gal Gadot hat wenige Tage nach der Geburt ein süßes Foto mit Ehemann Jaron und allen vier Töchtern, in...
Weiterlesen »
Putins neues Skiresort bedroht UNESCO-WeltkulturerbeRusslands Präsident Wladimir Putin warnt den Westen vor dem Einsatz von Truppen in der Ukraine und droht für diesen Fall mit einem Atomkrieg.
Weiterlesen »
