Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hibernate - State of the Union

Hibernate - State of the Union

Bewährt in unzähligen Projekten, ist Hibernate längst vielmehr als ein reines objektrelationales Mapping-Tool. Erweiterungen für volltext- und geobasierte Suchen, zum Zugriff auf NoSQL-Datenbanken, zur Implementierung von Audit-Prozessen oder zur Validierung Annotations-basierter Constraints stellen eine umfangreiche Toolbox für die Entwicklung datengetriebener Applikationen bereit.

Dabei werden die Projekte der Hibernate-Familie ständig weiterentwickelt. Bei der Menge an Änderungen ist es nicht leicht, den Überblick zu behalten. Mit diesem Vortrag wollen wir Abhilfe schaffen und unter anderem die folgenden Fragen beantworten:

* Was ist neu in Hibernate ORM 5.2 und 6?
* Wie kann eine Volltextsuche für JPA-Applikationen mittels Elasticsearch umgesetzt werden?
* Und welche Features bringen Bean Validation 2.0 und dessen Referenzimplementierung Hibernate Validator?

Avatar for Gunnar Morling

Gunnar Morling

March 13, 2018
Tweet

More Decks by Gunnar Morling

Other Decks in Programming

Transcript

  1. Hibernate - State of the Union Hibernate - State of

    the Union Gunnar Morling Gunnar Morling @gunnarmorling @gunnarmorling Thorben Janssen Thorben Janssen @thjanssen123 @thjanssen123 1
  2. Hibernate - State of the Union Hibernate - State of

    the Union Agenda Agenda Hibernate Portfolio Neuerungen in Hibernate ORM Hibernate Search Hibernate Validator #Hibernate @gunnarmorling @thjanssen123 2
  3. Gunnar Morling Gunnar Morling Open Source Software Engineer bei Red

    Hat Debezium Hibernate Bean Validation 2.0 Spec Lead Weitere Projekte: ModiTect, MapStruct [email protected] @gunnarmorling http://in.relation.to/gunnar-morling/ #Hibernate @gunnarmorling @thjanssen123 3
  4. Thorben Janssen Thorben Janssen Freiberuflicher Consult, Trainer, Autor Hibernate Tip

    - More than 70 solutions to common Hibernate problems [email protected] @thjanssen123 www.thoughts-on-java.org #Hibernate @gunnarmorling @thjanssen123 4
  5. Das Hibernate-Ökosystem Das Hibernate-Ökosystem Hibernate ORM OR-Mapping für relationale DBs

    Implementiert JPA Verwendbar mit Java SE Spring Jakarta EE #Hibernate @gunnarmorling @thjanssen123 7
  6. Das Hibernate-Ökosystem Das Hibernate-Ökosystem Hibernate Envers Automatische Integration mit Hibernate

    ORM Auditiert Änderungen an Entitäten API zur Suche im Audit-Log #Hibernate @gunnarmorling @thjanssen123 8
  7. Das Hibernate-Ökosystem Das Hibernate-Ökosystem Hibernate OGM Objekt-Mapping für NoSQL Infinispan,

    MongoDB, Neo4J Contrib-Repos: Cassandra, CouchDB, Redis, Ignite, Ehcache Domänenmodel mit JPA-Annotationen #Hibernate @gunnarmorling @thjanssen123 10
  8. Das Hibernate-Ökosystem Das Hibernate-Ökosystem Hibernate Search Volltextsuche für Hibernate ORM

    und OGM Integriert Elasticsearch Apache Lucene #Hibernate @gunnarmorling @thjanssen123 11
  9. Das Hibernate-Ökosystem Das Hibernate-Ökosystem Hibernate Validator Annotationsbasierte Constraints für Objekteigenschaften

    Methodenparameter Implementiert Bean Validation Spezifikation #Hibernate @gunnarmorling @thjanssen123 12
  10. Hibernate ORM Hibernate ORM Was bisher geschah 5.0 - 5.2

    Neuerungen in 2018 5.3 6.0 #Hibernate @gunnarmorling @thjanssen123 14
  11. Hibernate ORM 5.x Hibernate ORM 5.x Neu unterstützte DBs SAP

    Hana CockroachDB Hibernate Spatial "Java 9 Ready" #Hibernate @gunnarmorling @thjanssen123 15
  12. Hibernate ORM 5.x Hibernate ORM 5.x Java 8 Repeatable Annotationen

    Date und Time API Streams #Hibernate @gunnarmorling @thjanssen123 16
  13. Hibernate ORM 5.x Hibernate ORM 5.x Nützliche Helferlein JOIN ohne

    Beziehung Multi-find Natural IDs #Hibernate @gunnarmorling @thjanssen123 17
  14. Hibernate ORM 5.x Hibernate ORM 5.x Bytecode Enhancement Effizientere Dirty

    Checks Lazy loading für Eigenschaften Bi-Direktionale Beziehungen #Hibernate @gunnarmorling @thjanssen123 18
  15. Hibernate ORM 5.x Hibernate ORM 5.x Lazy Loading für Eigenschaften

    Gruppen von Eigenschaften #Hibernate @gunnarmorling @thjanssen123 @Entity public class Review { @Enumerated @Basic(fetch = FetchType.LAZY) private Rating rating; @Basic(fetch = FetchType.LAZY) @LazyGroup( "comment" ) private String comment; // ... } 20
  16. Hibernate ORM 5.x Hibernate ORM 5.x Management bi-direktionaler Beziehungen #Hibernate

    @gunnarmorling @thjanssen123 //Create relation Order order = new Order(); LineItem lineItem = new LineItem(); order.getLineItems().add( lineItem ); //lineItem.setOrder( order ); Nicht notwendig // 21
  17. Hibernate ORM 5.3 Hibernate ORM 5.3 5.3.0.CR1 verfügbar Implementiert JPA

    2.2 Repeatable Annotationen Stream API Date and Time API CDI-Unterstützung in AttributeConverter #Hibernate @gunnarmorling @thjanssen123 22
  18. Hibernate ORM 6.0 Hibernate ORM 6.0 Semantic Query Model (SQM)

    Performanzverbesserung Einheitliche SQL-Generierung Einheitliche Ergebnisverarbeitung SQM -> AST -> JDBC #Hibernate @gunnarmorling @thjanssen123 23
  19. Hibernate ORM 6.0 Hibernate ORM 6.0 Vereinheitlichte group & artifact

    IDs org.hibernate.orm:hibernate-core org.hibernate.search:hibernate-search-engine ... Envers wird Teil von Hibernate Core #Hibernate @gunnarmorling @thjanssen123 24
  20. Hibernate Search Hibernate Search Volltextsuche für Domänenmodelle Volltextsuche für Domänenmodelle

    Flexion, Unscharfe Suche, Umfeldsuche etc. Ergebnisgewichtung Nutzung eines Inverted Index Lucene Elasticsearch #Hibernate @gunnarmorling @thjanssen123 26
  21. Hibernate Search Hibernate Search Daten und Index synchron Daten und

    Index synchron Automatische Indexupdates Automatisches Mapping Kein manuelles JSON-Mapping Keine manuellen Typkonvertierungen Managed Entities von Queries #Hibernate Anwendung @gunnarmorling @thjanssen123 ORM DB Volltext-Index Hibernate Search 27
  22. @Indexed @Entity public class Address { @Id Integer id; @Field

    String street1; @Field(analyze=NO) @SortableField @Facet String city; @IndexedEmbedded Country country; // ... } Hibernate Search Hibernate Search Annotationen Annotationen #Hibernate @gunnarmorling @thjanssen123 28
  23. Hibernate Search Hibernate Search Neu in 5.x Neu in 5.x

    Lucene-Upgrades Seit 5.6: Elasticsearch Support für AWS JSR 352 Batch für Re-Indexing Performance, Performance, Performance! Support für WildFly Swarm und Spring Boot #Hibernate @gunnarmorling @thjanssen123 30
  24. Hibernate Search Hibernate Search Ausblick: 6.0 Ausblick: 6.0 Vollständige Abstraktion

    vom Lucene API Ermöglicht andere Engines (Solr) Lucene-Upgrades ohne inkompatible API-Änderungen Bessere Elasticsearch-Integration Aktuell: Proof of Concept #Hibernate @gunnarmorling @thjanssen123 31
  25. Hibernate Validator Hibernate Validator "Constrain Once - Validate Everywhere" "Constrain

    Once - Validate Everywhere" Constraints für JavaBeans Validierung automatisch oder per API Referenzimplementierung für Bean Validation 2.0 (JSR 380) public class User { @NotBlank @Size(min=1, max=100) private String name; @Past private LocalDate dob; } #Hibernate @gunnarmorling @thjanssen123 33
  26. Hibernate Validator Hibernate Validator Methodenvalidierung Methodenvalidierung Teil von Bean Validation

    1.1 (HV 5.x) Automatische Validierung von Parametern und Rückgabewerten CDI Spring @NotNull @ValidOrder public Order placeOrder(@NotNull Item item, @Positive int quantity) { // ... } #Hibernate @gunnarmorling @thjanssen123 34
  27. Hibernate Validator 6.0 Hibernate Validator 6.0 Bean Validation 2.0 Bean

    Validation 2.0 Java 8 Support Support für neue APIs (Date and Time - JSR 310) Nutzung neuer Sprachfeatures Repeatable Annotations Typannotationen #Hibernate @gunnarmorling @thjanssen123 35
  28. Hibernate Validator 6.0 Hibernate Validator 6.0 Constraints für Container-Inhalte Constraints

    für Container-Inhalte #Hibernate @gunnarmorling @thjanssen123 private List<@NotEmpty String> names; private Map<@NotNull @Valid EmailType, @Email String> emailsByType; public Optional<@Email String> getEmail() { ... }; private Table<Year, String, @Positive Integer> revenuePerYearAndCategory; 36
  29. Hibernate Validator 6.0 Hibernate Validator 6.0 Support für JavaFX Support

    für JavaFX #Hibernate @gunnarmorling @thjanssen123 37
  30. Hibernate Validator 6.0 Hibernate Validator 6.0 Neue Constraints Neue Constraints

    Bean Validation 2.0 @NotEmpty, @NotBlank @Email @Positive, @PositiveOrZero, @Negative, @NegativeOrZero @PastOrPresent, @FutureOrPresent Hibernate Validator @ISBN, @UniqueElements, @CodePointLength #Hibernate @gunnarmorling @thjanssen123 38
  31. Hibernate Validator 6.0 Hibernate Validator 6.0 Performance-Tuning Performance-Tuning Besserer Durchsatz

    Weniger Speicher- verbrauch #Hibernate @gunnarmorling @thjanssen123 39
  32. Hibernate Validator 6.0 Hibernate Validator 6.0 Ausblick Ausblick Exploration von

    Features für Bean Validation 2.1 "Free-Form" Release als Java 9 Module #Hibernate @gunnarmorling @thjanssen123 40
  33. Hibernate Hibernate Viel mehr als nur ORM Viel mehr als

    nur ORM #Hibernate @gunnarmorling @thjanssen123 41
  34. 43