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>
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();
            }
        }
 
	}
Le problème c'est que rien ne s'ajoute dans ma base de données