High-Performance Java Persistence Newsletter, Issue 37
Imagine having a tool that can automatically detect JPA and Hibernate performance issues. Wouldn’t that be just awesome?
Well, Hypersistence Optimizer is that tool! And it works with Spring Boot, Spring Framework, Jakarta EE, Java EE, Quarkus, or Play Framework.
So, enjoy spending your time on the things you love rather than fixing performance issues in your production system on a Saturday night!
Introduction
Welcome to a new issue of the High-Performance Java Persistence Newsletter in which we share articles, videos, workshops, and StackOverflow answers that are very relevant to any developer who interacts with a database system using Java.
Articles
The pick of this edition is this article about the PostgreSQL 14 enable_memoize
optimization that can help you speed up LATERAL join queries.
A very interesting tool I had the chance to investigate lately is Lightrun, which helps you inject logs and metrics or collect snapshots from production. If you’re interested in seeing how it works, check out the following two articles:
- Lightrun – the best way to debug production problems
- Java application performance tuning using Lightrun
A very good article I read is this one about the uselessness of SELECT 1
queries executed by old connection pools still in use today because of legacy configurations no one took care to update.
Formatting SQL is a very common requirement because, most often, SQL statements are logged as a single-line string. If you are curious about how I’m formatting SQL queries directly from the command line, then check out this article.
If you’re using PostgreSQL, you might want to check out this article, which explains how to set up your PostgreSQL machines to get the most out of your database.
I managed to build a very nice tool that can help you assert if JPA associations are fetched using secondary queries or via JOINs. If you’re interested in validating your JPA data access layer, then check out this article.
Best Tweets
Here are the best tweets I posted since the last newsletter:
✅ You’re solely responsible for your career journey.
— Vlad Mihalcea (@vlad_mihalcea) March 13, 2022
❌ Not the company you're working for.
❌ Not your manager you're reporting to.
❌ Not the team you’re working with.
The sooner you realize this, the better.
Hibernate 6 has arrived!
— Vlad Mihalcea (@vlad_mihalcea) April 3, 2022
Congrats to the development team and looking forward to writing about it.https://t.co/1zyqe3KILi pic.twitter.com/Bc0CzTFarQ
For a software architecture, less is more.
— Vlad Mihalcea (@vlad_mihalcea) March 10, 2022
My Dell XPS is 5 years old today. I plan on keeping it for at least 2 or 3 more years.
— Vlad Mihalcea (@vlad_mihalcea) March 17, 2022
Buying less electronics helps us reduce our ecological footprint. pic.twitter.com/FQhj1eNYjv
A beginner’s guide to CDC (Change Data Capture)https://t.co/dFR5UbuOX4 pic.twitter.com/WAl2voSOqr
— Vlad Mihalcea (@vlad_mihalcea) April 4, 2022
Project Releases
After years of development, I’m very excited to announce to you that Hibernate 6 has been released. I remember discussing it in Paris in December 2017 when I got the chance to meet the Hibernate development team. Hibernate 6 provides many improvements like the new SQM parser, positional-based parameter binding, a much better JPQL parser that allows Window Functions, a new entity attribute type system, and many more features.
I also released the 2.16.1 version of the Hibernate Types project, and I’m studying how I could add support for Hibernate 6.

Get in touch with my latest articles!
StackOverflow Answers
The following StackOverflow answers have been trending since the last newsletter episode:
- How to use Hibernate as a Persistence Provider in TomEE
- Hibernate returns stale Objects when calling findOne
- How can I construct a SetJoin in JPA when there’s no Set in my entity member field?
- Hibernate 6: What is SQM?
- What is the meaning of “called outside of transaction” in the Hibernate persist method documentation