我正在尝试使用 Hibernate 插入或更新大数据。我有一个包含 350k 个对象的列表,当我使用 HibernatesaveOrUpdate()
时,插入所有数据需要几个小时。
我正在使用下面的代码进行此操作。我的开发环境是JDK1.4和Oracle数据库。
public void saveAll(List list)throws HibernateException{
Session session = HibernateUtil.getEYSSession();
Iterator it = list.iterator();
int i = 0;
while(it.hasNext()){
i++;
Object obj = it.next();
session.saveOrUpdate(obj);
if (i % 50 == 0) { session.flush(); session.clear(); }
}
}
我正在使用批量更新并设置hibernate.jdbc.batch_size
属性 50,但它没有帮助。
我的对象与另一个对象具有一对一的关系,因此在这种情况下使用 StatelessSession 可能是一个问题。因为我认为 StatelessSession 不会级联到组合对象。
您对saveOrUpdate()
在这种情况下如何提高操作性能有任何想法吗?
谢谢。