Hibernate 6 has been released!
Congratulations are in order to the Hibernate development team. Hibernate 6 represents a ton of work.
What’s new in Hibernate 6?
There’s a lot to like here. They put a lot of effort into a lot of areas that most users won’t notice, but overall Hibernate is stronger, and they didn’t change the surface of Hibernate much at all.
That means developers benefit from a better release without going through a ton of update shenanigans. There might be a few changes here and there, especially for those who leverage Hibernate’s strengths, but for most users it’s generally a very mild update.
Hibernate and JPA
Hibernate is one of the first Java libraries you think of when you want to access a relational database.
Java has JDBC built in. JDBC is quite good for what it is designed for: to provide access to relational schemas from Java in a standard manner. A given relational database may have variations of SQL, but talking to a database in the general sense is trivial.
However, relational models and object models are simply not the same. A relational model is more like a spreadsheet, and an object model is closer to how we think of things in the real world.
We don’t think, “There are 17 doors” and “There is my house” and “Perhaps one of those doors is the front door for my house.” We think, “I have a house, and my house has a front door,” and perhaps “… and there is my front door.”
Simplified data persistence
JDBC gives us the “17 doors” prospect. Hibernate converts that into the second model, which is more appropriate for both Java and humans.
There are costs and conventions, of course. Designing an object model is often more akin to designing a graph, and mapping a graph into a database can negatively impact performance. That’s given JPA a bad reputation among some practitioners. However, it’s not difficult to design an object model for efficient use with JPA; it just takes some research and institutional knowledge. Both of those are readily available for Hibernate given that it’s been around for 20 years now.
To be sure, Hibernate has other issues: scalability concerns, native data structure access for specific database dialects, common performance issues related to simplistic use. All of these issues are addressed and fully documented in the Java community.
The Hibernate 6.0 release provides better performance, new features, better support for more recent versions of Java, and an excellent path for future development. All together these create a compelling update for Java developers.