Are you struggling with application performance issues?
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.
All examples require at least Java 16 because of the awesome Text Blocks feature, which makes JPQL and SQL queries so much readable.
Maven
You need to use Maven 3.6.2 or newer and configure Maven Toolchains as follows:
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.
Inside the toolchains.xml, you need to define the installation path of Java 13 or newer, as follows:
In my example, the JAVA_HOME_16 is an environment variable pointing to a local folder where Java 16 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:
Eclipse
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:
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.
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:
PostgreSQL
You should install PostgreSQL and the password for the postgres user should be admin.
Now you need to create a high_performance_java_persistence database.
Oracle
You need to download and install Oracle XE
Set the sys password to admin
Connect to Oracle using the "sys as sysdba" user and create a new user:
alter session set "_ORACLE_SCRIPT"=true;
create user oracle identified by admin default tablespace users;
grant dba to oracle;
alter system set processes=1000 scope=spfile;
alter system set sessions=1000 scope=spfile;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Open the C:\app\${user.name}\product\21c\homes\OraDB21Home1\network\admin folder where ${user.name} is your current Windows username.
Locate the tnsnames.ora and listener.ora files and change the port from 1522 to 1521 if that's the case. If you made these modifications,
you need to restart the OracleOraDB21Home1TNSListener and OracleServiceXE Windows services.
MySQL
You should install MySQL 8 and the password for the mysql user should be admin.
Now, you need to create a high_performance_java_persistence schema
Beside having all privileges on this schema, the mysql user also requires select permission on mysql.PROC.
If you don't have a mysql user created at database installation time, you can create one as follows:
CREATE USER 'mysql'@'localhost';
SET PASSWORD for 'mysql'@'localhost'='admin';
GRANT ALL PRIVILEGES ON high_performance_java_persistence.* TO 'mysql'@'localhost';
GRANT SELECT ON mysql.* TO 'mysql'@'localhost';
FLUSH PRIVILEGES;
SQL Server
You should install SQL Server Express Edition with Tools. Chose mixed mode authentication and set the sa user password to adm1n.
Open SQL Server Configuration Manager -> SQL Server Network Configuration and enable Named Pipes and TCP
In the right pane of the TCP/IP option, choose Properties, then IP Addresses and make sure you Enable all listed IP addresses.
You need to blank the dynamic TCP port value and configure the static TCP port 1433 for all IPs.
Open SQL Server Management Studio and create the high_performance_java_persistence database
Maven
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!
请发表评论