Today, we published a new maintenance release of Hibernate ORM 6.1: 6.1.5.Final.
This release introduces a few improvements, bug fixes, and a significant set of performance improvements.
The Red Hat performance team has identified a particular pattern of code which triggers a severe performance penalty on large multi-core servers. Many libraries have been found to be affected, including Hibernate ORM.
While the engineering team’s primary goal will be to try address the JVM issue, tracked as JDK-8180450, we’ve started to include some mitigation patches so that our users won’t have to wait for years.
This work is in early phases and we’re likely to follow up with additional related improvements, but if running on the HotSpot JVM and having multiple cores and using bytecode enhancements you should already experience improved CPU efficiency with this release.
Early tests are extremely promising!
In case you’re interested to learn more, we discuss the problem extensively on Quarkus Insights episode #107.
To figure out if your own code or other libraries are affected, use the Type Pollution Agent.
The patch in Hibernate ORM was tracked as HHH-15616 - more similar goodies are expected in further upcoming releases.
N.B. this issue has been around for 20 years approximately: we’re not facing a regression, I’d rather say it’s an important discovery and coming with terrific good news, assuming you care about the costs of your servers and/or the environment.
Gavin himself has been reworking this tricky area, improving both the code and the error message that might be generated in case of user mistakes.
This set of changes potentially addresses a whole set of open issues, we need to still verify how many are resolved.
Another patch by Gavin addressing multiple issues relating to Many-to-One mappings.
Hibernate schema validation now supports table aliases also for DB2, to enable this feature is necessary to set the
hibernate.synonyms configuration property to
true (see 15585)
We have fixed two bugs affecting the Gradle plugin:
These fixes are important for Spring Native.
We have fixed a bug preventing to eager loading an association of a Single Table Inheritance (see HHH-15622)