Hibernate insert base de données
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:
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:
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