Skip to content
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.


 Welcome to Batoo JPA

 F A S T E S T     J P A   I M P L E M E N T A T I O N

 Batoo JPA is the fastest JPA Implementation by far.

 It is 10 ~ 20 times faster then the leading JPA providers.

 L I C E N S E

 Copyright (c) 2012 - Batoo Software ve Consultancy Ltd.

 This copyrighted material is made available to anyone wishing to use, modify,
 copy, or redistribute it subject to the terms and conditions of the GNU
 Lesser General Public License, as published by the Free Software Foundation.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
 for more details.

 You should have received a copy of the GNU Lesser General Public License
 along with this distribution; if not, write to:
 Free Software Foundation, Inc.
 51 Franklin Street, Fifth Floor
 Boston, MA  02110-1301  USA

 H E L L O R E S T

 This project is a demonstration of how fast Batoo JPA compared to Hibernate on end to end context.
 Application has 4 layers, (1) Spring Rest MVC, (2) Spring Data, (3) JPA, (4) MySQL JDBC

 The following tests are run on Ubuntu 12.04 on Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz with 250GB SSD Disk

 1) Install Java by running "sudo apt-get install openjdk-7-jdk"
 2) Download and install Apache Maven 3.0.4
 3) Download and install Apache JMeter 2.8
 4) Download and install Apache Tomcat 7.0.32
 5) Install git by running "sudo apt-get install git"
 6) Install a separate MySQL Server. Update the DB Settings in in the step (8) third command when editing the file gedit /src/main/java/org/batoo/jpa/hellorest/    
 7) Check out and install Batoo JPA
 	git clone git://
 	cd BatooJPA
 	mvn install -Dmaven.test.skip  
 8) Checkout and install HelloRest, edit ApplicationConfig and set the MySQL Connection parameters
 	git clone git://
 	cd HelloRest
 	gedit /src/main/java/org/batoo/jpa/hellorest/ 
 	mvn package
 9) Copy the WAR file in HelloRest.war into Tomcat webapps

 10) Change Directory to Tomcat Directory and run tomcat by "bin/ run"
 11) Run Apache JMeter and load the test test.jmx in HelloRest project.
 12) Run the test to warm Tomcat.
 13) Change the Counters in the test plan from 1000001 -> 2000001 & 1000001 -> 2000001    

 14) Run the test for benchmark now and at the end of the test note down the TesPlan -> ThreadGroup -> Aggregate Report, Througput Column
 15) Change back the counters to 2000001 -> 1000001 & 2000001 -> 1000001

 16) Edit /src/main/java/org/batoo/jpa/hellorest/ and change BATOO_OR_HIBERNATE to false
 17) Repeat steps (8) ~ (14)
 R E S U L T S
 On given hardware following are the throughputs obtained
 Batoo JPA 2681 Req/s
 Hibernate 1742 Req/s
 Ratio ~   153%
 As HelloRest application consists of 4 layers, Replacing Hibernate with JPA virtually saves you the heavy CPU resources spent by Hibernate. As this big chunk of CPU is now available to the rest of the application, the application performance increases more then half.
 More information on BAtoo JPA is available at
You can’t perform that action at this time.