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?

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