spring-jpa-bulk
spring-jpa-bulk copied to clipboard
spring-jpa-bulk
Configuration and simple benchmarks of 5 ways of setting up bulk inserts ("batch" inserts) in a Spring/JPA environment using Hibernate and an in-memory H2 database:
-
Using a default loop of
EntityManager.persist(...)
. -
Same as 1., but flushing and clearing the
EntityManager
everyn
iterations. -
Using Hibernate's
StatelessSession
and a community provided Spring integration. -
Using
JdbcTemplate
. -
Using JDBI.
The project is Maven based.
Benchmarks
Run the benchmarks with
mvn test
The benchmarks are implemented using JUnitBenchmarks, which conveniently measures the elapsed time of a JUnit test method. The JUnit test method at hand inserts 500000 entities and checks their count.
Sample output snip on my machine (time measurements in seconds):
DefaultBulkOperationsTest.bulkInsert:
round: 6.88 [+- 1.38] ...
FlushingBulkOperationsTest.bulkInsert:
round: 4.19 [+- 0.75] ...
StatelessSessionBulkOperationsTest.bulkInsert:
round: 2.57 [+- 0.81] ...
JdbcTemplateBulkOperationsTest.bulkInsert:
round: 1.79 [+- 0.50] ...
JdbiBulkOperationsTest.bulkInsert:
round: 4.27 [+- 0.58] ...