High-Performance Java Persistence Newsletter, Issue 7
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 that shows you 10 PostgreSQL caveats. When using a relational database system, you need to be aware of both strengths and weaknesses, and this article is especially valuable since most tutorials are rather focused on strengths.
When using Java Persistence, the Metamodel can hep you write type-safe Criteria API queries. If you want to know how you can generate the JPA Metamodel and how you can use it to build queries dynamically, then check out this article.
Have you ever wondered how much overhead does an extra join add to an SQL query? I definitely did so. This article offers a very thorough analysis of join performance when using PostgreSQL.
If you are experiencing issues when using PostgreSQL and want to troubleshoot them, then you need to check the database logs. This article explains how you can activate logging and where you can find the log files generated by PostgreSQL.
According to the 2019 StackOverflow Developer Report, SQL is the third most popular programming language.
Learning SQL is a great investment. Not only will it help you design a more efficient data access layer, but you will use this knowledge for many years to come. For this reason, I wrote an article that explains how INNER JOIN works in SQL.
If you want to learn more about transaction isolation guarantees, 2PC (Two-Phase Commit), and MVCC (Multi-Version Concurrency Control), then this article is a good starting point.
Project releases
I managed to release the 2.1 version of Hypersistence Optimizer. This release adds many optimization checks that will help you speed up your Java Persistence and Hibernate application. Enjoy using it!
Hibernate ORM 5.4.14 has been released. This release aims to address some issues found by the Quarkus development team.
I released the 2.9.8 version of the Hibernate Types project, which adds support for empty and infinite PostgreSQL ranges. Also, for Oracle users, this release fixes an issue that prevented storing null JSON objects when using the JsonStringType
.

Get in touch with my latest articles!
StackOverflow Answers
The following StackOverflow answers have been trending over the past two weeks:
- Can someone explain mappedBy in JPA and Hibernate?
- How to generate the JPA entity Metamodel?
- Select DISTINCT on JPA
- CROSS JOIN vs. INNER JOIN in SQL
- SQL JOIN – WHERE clause vs. ON clause
- SQL INNER JOIN syntax
- How to change a field name in JSON using Jackson
- What is meant by “the inverse side of the association” in a bidirectional JPA OneToMany/ManyToOne association?