UnguruBulan
UnguruBulan

Reputation: 1030

Spring Data JPA saveAll not doing batch insert

So I'm using a simple JpaRepository and the saveAll() method is called.

hibernate.jdbc.batch_size = 500
hibernate.order_inserts = true
hibernate.generate_statistics = true

After running the application:

   8045055 nanoseconds spent acquiring 1 JDBC connections;
    0 nanoseconds spent releasing 0 JDBC connections;
    137189246 nanoseconds spent preparing 1158 JDBC statements;
    1417689514 nanoseconds spent executing 1158 JDBC statements;
    0 nanoseconds spent executing 0 JDBC batches;
    0 nanoseconds spent performing 0 L2C puts;
    0 nanoseconds spent performing 0 L2C hits;
    0 nanoseconds spent performing 0 L2C misses;
    16270990 nanoseconds spent executing 1 flushes (flushing a total of 1158 entities and 0 collections);
    0 nanoseconds spent executing 0 partial-flushes (flushing a total of 0 entities and 0 collections)

Can anyone see a reason for 0 having JDBC batches executed? Also, I have to point that my entity has @GeneratedValue(strategy = IDENTITY) primary key

Upvotes: 6

Views: 26329

Answers (3)

Cepr0
Cepr0

Reputation: 30474

Hibernate doesn't perform insert batching with the identity identifier generator. More info is here.

Upvotes: 16

Conrad
Conrad

Reputation: 564

Add prefix spring.jpa.properties to property names. It should look like this:

spring.jpa.properties.hibernate.jdbc.batch_size = 500

Upvotes: 1

Chris Savory
Chris Savory

Reputation: 2755

Set hibernate.order_updates = true also.

Change the logger for org.hibernate.engine.jdbc.batch.internal.BatchingBatch to DEBUG and see what output you are getting.

Upvotes: 1

Related Questions