How to merge entity collections with JPA and Hibernate

Introduction In this article, you are going to learn why overwriting entity collections is an anti-pattern and how you can merge collections both effectively and efficiently with JPA and Hibernate. The reason I decided to write this article is that I’ve been this question asked over and over and over again.

How to map java.time Year and Month with JPA and Hibernate

Introduction In this article, we are going to see how you can map the java.time.Year and java.time.Month with both JPA and Hibernate. As explained in this article, JPA 2.2 supports LocalDate, LocalTime, LocalDateTime, OffsetTime, OffsetDateTime from the java.time package. Hibernate has been supporting the Java 8 Date/Time classes since 5.0 via the hibernate-java8 dependency, but since version 5.2, this dependency was merged with hibernate-core so you get the Duration, Instant and ZonedDateTime types in addition to the ones supported by JPA 2.2. However, neither JPA nor Hibernate supports the java.time.Year type out-of-the-box…. Read More

How to map the Java YearMonth type with JPA and Hibernate

Introduction In this article, we are going to see how you can map a java.time.YearMonth with both JPA and Hibernate. As I explained in this article, JPA 2.2 supports the following Date/Time types introduced in Java 8: java.time.LocalDate java.time.LocalTime java.time.LocalDateTime java.time.OffsetTime java.time.OffsetDateTime Apart from supporting those, Hibernate supports also: java.time.Duration java.time.Instant java.time.ZonedDateTime However, neither JPA nor Hibernate support the java.time.YearMonth out-of-the-box. As you will see, adding support for java.time.YearMonth is really straightforward for both standard JPA or Hibernate.

Query pagination with JPA and Hibernate

Introduction Inspired by this StackOverflow answer I gave recently, I decided it’s time to write an article about query pagination when using JPA and Hibernate. In this article, you are going to see how to use query pagination to restrict the JDBC ResultSet size and avoid fetching more data than necessary.