Meet Jos Roseboom
Are you struggling with performance issues in your Spring, Jakarta EE, or Java EE application?
Imagine having a tool that could automatically detect performance issues in your JPA and Hibernate data access layer long before pushing a problematic change into production!
With the widespread adoption of AI agents generating code in a heartbeat, having such a tool that can watch your back and prevent performance issues during development, long before they affect production systems, can save your company a lot of money and make you a hero!
Hypersistence Optimizer is that tool, and it works with Spring Boot, Spring Framework, Jakarta EE, Java EE, Quarkus, Micronaut, or Play Framework.
So, rather than allowing performance issues to annoy your customers, you are better off preventing those issues using Hypersistence Optimizer and enjoying spending your time on the things that you love!
JavaZone 2026
At the beginning of September, I participated in JavaZone for the third time and had the privilege of meeting a lot of passionate software developers willing to share their knowledge with the community.
In the first conference day, I attended a very good talk about JPA performance tuning that was delivered by Jos Roseboom and since I enjoyed his talk, I proposed him to gave an interview for this blog.
Therefore, in this article we have the pleasure of getting to know Jos and take opportunity of learning about Spring and JPA and performance tuning in real-world applications.
Welcome, Jos Roseboom
Hi, Jos. I’m very happy to have you here on this blog, so let’s talk about your JavaZone talk. Since conference talks about performance pitfalls are usually triggered by some real incidents, what were the ones that made you decide to talk about this topic?
That definitely holds true for me.
On one occasion, a system became completely unresponsive because all database connections were acquired by requests that were waiting for an external system that was having problems.
Another example was an application that became unacceptably slow. The reason was that data was gathered by fetching entities and then following their associations. This came from the misconception that you don’t need knowledge of or awareness about SQL when using Hibernate. It resulted in far too many queries. Not a problem on a developer machine, but a nightmare in production.
As an independent contractor, I saw the same kinds of problems at different companies. Seeing them repeatedly made me realize that this was worth a talk.
Connection mismanagement is a deep-down abstraction that few devs take into consideration. How do you think this problem is handled in production systems, given that both DB connections (PostgreSQL, MySQL) and application-level connection pools are limited?
I see the maximum number of database connections as a budget that has to be divided over all application instances using that database. It is important that developers are aware of the limits of the entire setup. If you have multiple instances, or multiple applications using the same DataSource, you have to realize that the DataSource itself also has a limit on the number of connections. You cannot simply configure every application instance with a large connection pool and assume all those connections will actually be available.
Another important aspect is how the application uses those connections. Make sure you don’t keep the connection from the pool when you don’t need to interact with the database.
Your talk says that tools can help us catch such issues before they hit production systems. What tools do you rely on the most to make sure that your Java application runs as fast as possible?
I like having monitoring that gives me metrics about the running application, such as the slowest endpoints and the endpoints that consume the most server time. A frequently used endpoint that is somewhat slow can be a much bigger problem than an extremely slow endpoint that is rarely called. There are several great commercial options, but you can also set this up yourself with Prometheus and Grafana.
While developing I really like Gatling to put my application under load. Either as a test or to diagnose while profiling it with IntelliJ’s profiler. For logging queries datasource-proxy is nice. For properly using JPA, your Hypersistence Optimizer is a great tool.
If you enjoy this interview, then check out Jos’ talk from JavaZone:
If you were to start a greenfield project tomorrow, would you still reach for JPA and Hibernate, or would you choose some other data access technology?
As always, it depends. But for most applications using a relational database I would pick Spring Data JPA with Hibernate.
For writing data, I like the state management that Hibernate takes care of. For reading data, I especially like the combination with Spring Data JPA. Repository queries can be validated when the application starts, so a typo in JPQL can make the application fail fast instead of only failing when that particular code path is hit in production. I also find JPQL very readable. The important thing is not to treat Hibernate as a way to avoid understanding SQL. You still need to understand what happens underneath.
Since the talk you delivered at JavaZone had a 60-minute slot, what other performance issues would you have wanted to discuss if you were to deliver a several hour workshop instead?
Sixty minutes is a nice time slot, but there is always more to say. In the connection pool part, I would have liked to discuss how deadlocks resulting from transaction propagation using REQUIRES_NEW can exhaust the connection pool. On the JPA side, I would have liked to spend more time on the different entity states and how they relate to LazyInitializationException. Also equals and hashCode for entities are worth talking about.
If you enjoyed this article, I bet you are going to love my Book and Video Courses as well.
Thank you, Jos
It was a real pleasure to meet Jos at JavaZone and I’m looking forward to seeing him at other conferences in the future. If you want to get in contact with Jos, then check out his LinkedIn profile and personal website.




