2
现在我正在使用entitymanager将对象实体列表插入数据库中,使用我的dao使用这样的代码。Hibernate EntityManager persist()和数据库往返计数
@Transaction
public void insertBatch(List<EntityObject> o){
for(int i=0;i<o.size();i++){
em.persist(o);
if(o.size % 100 == 0){ //equal to JDBC batch size
em.flush();
em.clear();
}
}
}
当我监视加入到应用上下文
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true"/>
</bean>
</property>
这个SQL语句,结果在控制台看起来就像这样
Hibernate: insert into TABLE (FIELD1, FIELD2) values (?, ?)
Hibernate: insert into TABLE (FIELD1, FIELD2) values (?, ?)
...
...
...//untill reach 100 lines.
Hibernate: insert into TABLE (FIELD1, FIELD2) values (?, ?)
我的问题是。 这是否意味着每次当我调用这个方法时,它都会与数据库进行100次往返,或者它只做1次往返,否则呢?
任何答案或见解将不胜感激。
谢谢。
只需在调用flush()之前添加一条日志语句,您就可以自己看到。 –