我正在学习使用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.jdbc.batch_size
既然我已经在配置文件中设置了,这不是应该由休眠自动完成的吗?
对我来说,我似乎是在手动批处理我的操作,那么为什么我必须设置hibernate.jdbc.batch_size
then 的值呢?