High-Performance Java Persistence Newsletter, Issue 43
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 tells the story of how CashApp managed to scale their MySQL database systems by migrating to Vitess.
Last week, my blog turned nine years old. When I started blogging, I had no idea what I was doing, but little by little, I figured out how to improve my writing and provide more value to my readers. Thank you for reading my blog and stay tuned for more awesome content.
If you’re using MySQL, this article is very useful as it provides you with various use cases where MySQL would not be the appropriate choice. Knowing what problem a tool is meant to solve can help you avoid architectural problems that stem from using the wrong tool for the job.
Recently, I started to investigate YugabyteDB, as I’m very excited about this new generation of database systems that have emerged over the past few years. If you are curious about what YugabyteDB can do for you, then check out the following two articles:
If you are using Spring, then, most likely, you’ve seen the findAll
method used here and there. Unfortunately, inheriting this method in every Repository is very dangerous for application performance, as it can easily be misused. For more details about why you should usually avoid it, check out this article.
Videos
I uploaded a new video on YouTube about the best way to map @OneToOne
relationships:
This video is part of my High-Performance SQL video course, so if you like this episode, you are going to love the video course.
Best Tweets
Here are the best tweets I posted since the last newsletter:
The Spring Data findAll Anti-Pattern https://t.co/kwc9XTeVz8 pic.twitter.com/lN1hFqvTMc
— Vlad Mihalcea (@vlad_mihalcea) September 12, 2022
Developing Spring framework pic.twitter.com/f8UZ0EDzXL
— Vlad Mihalcea (@vlad_mihalcea) September 11, 2022
Blogging has helped me write much better GitHub issues.
— Vlad Mihalcea (@vlad_mihalcea) October 2, 2022
Improving your writing and expressiveness is a very valuable skill.
A beginner’s guide to #YugabyteDB, a PostgreSQL-compatible database that combines the convenience and data integrity of relational databases with the scaling features of NoSQL databases. https://t.co/RuhaOmd48S pic.twitter.com/spucsTZOU0
— Vlad Mihalcea (@vlad_mihalcea) September 8, 2022
If you enjoy learning, you will be fine when you realize how little you actually know.
— Vlad Mihalcea (@vlad_mihalcea) September 21, 2022
Project Releases
The 2.6.2 version of Hypersistence Optimizer is out and provides support for Spring and Hibernate 6. By the time you upgrade to this combo, Hypersistence Optimizer will be there for you, making sure your applications run as fast as possible.
I also released several versions on the 2.19 branch of the Hibernate Types OSS project, which provides better support for native GraalVM images and enhances the HibernateRepository
utility.
PostgreSQL 15 has been released, offering:
- support for the standard
MERGE
statement - performance improvements when sorting
- various bug fixes
Hibernate ORM has released several new versions for both 5.6 and 6.1 branches:

Get in touch with my latest articles!
StackOverflow Answers
The following StackOverflow answers have been trending since the last newsletter episode:
- Overriding
@Id
defined in a@MappedSuperclass
with JPA - Adding a Spring shutdown hook prior to closing the
EntityManagerFactory
- How to filter out Hibernate log entries
- When Hibernate flushes a Session, how does it decide which objects in the session are dirty?
- How to use a Hibernate generator to create a Primary Key for a reference table?