High-Performance Java Persistence

The High-Performance Java Persistence book and video course code examples. I wrote this article about this repository since it's one of the best way to test JDBC, JPA, Hibernate or even jOOQ code. Or, if you prefer videos, you can watch this presentation on YouTube.

Are you struggling with application performance issues?

Hypersistence Optimizer

Imagine having a tool that can automatically detect if you are using JPA and Hibernate properly. No more performance issues, no more having to spend countless hours trying to figure out why your application is barely crawling.

Imagine discovering early during the development cycle that you are using suboptimal mappings and entity relationships or that you are missing performance-related settings.

More, with Hypersistence Optimizer, you can detect all such issues during testing and make sure you don't deploy to production a change that will affect data access layer performance.

Hypersistence Optimizer is the tool you've been long waiting for!


If you are interested in on-site training, I can offer you my High-Performance Java Persistence training which can be adapted to one, two or three days of sessions. For more details, check out my website.


If you want me to review your application and provide insight into how you can optimize it to run faster, then check out my consulting page.

High-Performance Java Persistence Video Courses

If you want the fastest way to learn how to speed up a Java database application, then you should definitely enroll in my High-Performance Java Persistence video courses.

High-Performance Java Persistence Book

Or, if you prefer reading books, you are going to love my High-Performance Java Persistence book as well.

High-Performance Java Persistence book

High-Performance Java Persistence video course


All examples require at least Java 13 because of the awesome Text Blocks feature, which makes JPQL and SQL queries so much readable.


You need to use Maven 3.6.2 or newer and configure Maven Toolchains as follows:

  1. You need to create a toolchains.xml file in the Maven Home folder (e.g., %M2_HOME% on Windows, $M2_HOME on Unix based systems). For example, on Windows, the toolchains.xml file is going to be located at this path: c:\Users\%USERNAME%\.m2\toolchains.xml.
  2. Inside the toolchains.xml, you need to define the installation path of Java 13 or newer, as follows:


In my example, the JAVA_HOME_13 is an environment variable pointing to a local folder where Java 13 is installed.

For more details about using Maven Toolchains, check out this article.

IntelliJ IDEA

On IntelliJ IDEA, the project runs just fine. You will have to make sure to select Java 13 or newer and enable the preview features as illustrated by the following diagram:

HHow to set up IntelliJ IDEA to enable the Java 13 preview features


If you're using Eclipse, you must use the Open JDK compiler and not the Eclipse-based one which suffers from this issue.

However, on Eclipse it has been reported that you need to consider the following configurations. Many thanks to Urs Joss for the hints:

  1. Eclipse does not automatically treat the generated sources by jpamodelgen as source folders. You need to add a dependency on hibernate-jpamodelgen and use the build-helper-maven-plugin to source the folders with the generated sources.
  2. Secondly, the Maven eclipse plugin e2m seems to have an issue with some plugin configurations. Make sure you configure e2m to ignore the false positives issues since the project runs just fine from a Maven command line.

Database setup

The Integration Tests require some external configurations:


To build the project, don't use install or package. Instead, just compile test classes like this:

mvn clean test-compile

Or you can just run the build.bat or build.sh scripts which run the above Maven command.

Afterward, just pick one test from the IDE and run it individually.

Don't you run all tests at once (e.g. mvn clean test) because the test suite will take a very long time to complete.

So, run the test you are interested in individually.

Enjoy learning more about Java Persistence, Hibernate, and database systems!