Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you enable batch inserts in hibernate?

With hibernate, when I attempt to enable batch inserts with

  <property name="jdbc.batch_size">50</property>

I get the following output:

 [...] cfg.SettingsFactory INFO  - JDBC batch updates for versioned data: disabled
 [...] cfg.SettingsFactory INFO  - Order SQL inserts for batching: disabled

And then this:

 [...] jdbc.AbstractBatcher DEBUG - Executing batch size: 1

never more than batch size: 1 basically.

Am I missing a setting?

like image 955
rogerdpack Avatar asked Aug 17 '12 18:08

rogerdpack


1 Answers

To enable batching for both INSERT and UPDATE statements, you need to sett all the following Hibernate properties:

spring.jpa.properties.hibernate.jdbc.batch_size=30
spring.jpa.properties.hibernate.order_inserts=true
spring.jpa.properties.hibernate.order_updates=true

If you can use a SEQUENCE, then you should not use IDENTITY entity identifier generator, since it disables batch fetching.

If you cannot use a SEQUENCE (e.g. MySQL), then try using a separate mechanism to enable batch inserts (e.g. JDBC) instead of using the TABLE generator which does not scale and has a high-performance penalty.

like image 185
Vlad Mihalcea Avatar answered Oct 09 '22 05:10

Vlad Mihalcea