【发布时间】:2017-07-10 08:58:34
【问题描述】:
我正在学习使用 java 的 hibernate 5.2.10。我开始使用一些在线教程,但遇到了以下问题。
在使用批处理的时候,我看到的所有教程都先在配置文件中设置hibernate.jdbc.batch_size。之后的代码类似这样:
Session session = SessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<1000000; i++ )
{
Student student = new Student(.....);
session.save(employee);
if( i % 50 == 0 ) // Same as the JDBC batch size
{
//flush a batch of inserts and release memory:
session.flush();
session.clear();
}
}
tx.commit();
session.close();
我为什么要手动执行flush() 和clear()?这不是应该由hibernate自动完成的,因为我已经在配置文件中设置了hibernate.jdbc.batch_size吗?
对我来说,我好像是手动批处理我的操作,那么为什么我必须设置 hibernate.jdbc.batch_size 的值呢?
【问题讨论】: