Bonjour,
Pour améliorer la performance de mes insert avec hibernate, j'ai vu qu'on pouvais utiliser un système de batch_size:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <bean id="sqlServerDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/db" /> </bean> <bean id="sqlServerEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="sqlServerDataSource" /> <property name="packagesToScan" value="package" /> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> </property> <property name="jpaProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.enable_lazy_load_no_trans">true</prop> <prop key="hibernate.jdbc.batch_size">1000</prop> <prop key="hibernate.order_inserts">true</prop> <prop key="hibernate.order_updates">true</prop> <prop key="hibernate.jdbc.batch_versioned_data">true</prop> </props> </property> </bean> <bean id="sqlServerTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="sqlServerEntityManagerFactory" /> </bean>Le problème c'est que rien ne s'ajoute dans ma base de données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 /** sqlServerEntityManagerFactory */ @PersistenceContext(unitName="sqlServerEntityManagerFactory") private EntityManager sqlServerEntityManagerFactory; @Transactional(value="sqlServerTransactionManager") public void save(List<Object> listObjet){ int batchSize = 1000; for (int i = 0; i < listObjet.size(); i++){ Object object= listObjet.get(i); sqlServerEntityManagerFactory.persist(object); if (i % batchSize == 0 && i > 0) { sqlServerEntityManagerFactory.flush(); sqlServerEntityManagerFactory.clear(); } } }
Partager