用hibernate进行批量插入,由于数据比较多,就在网上找了些批量插入的代码
Configuration con = new Configuration().configure();
SessionFactory sf = con.buildSessionFactory();
Session session = sf.openSession();
Transaction tr = session.beginTransaction();
for(int i=0;i<10000000;i++){
UserBean ub = new UserBean();
ub.setName("里"+i);
ub.setMoney(i);
session.save(ub);
if(i%50==0){
session.flush();
session.clear();
System.out.println(i);
}
}
tr.commit();
session.close();
但是数据插入到30多W的时候报错了,有什么方法可以解决吗?

解决方案 »

  1.   

    没办法啊,在学hibernate的批量更新,肯定要先有数据三
      

  2.   

    Configuration con = new Configuration().configure();
    SessionFactory sf = con.buildSessionFactory();
    Session session = sf.openSession();
    Connection conn = session.connection();
    Transaction tr = session.beginTransaction();
    try {
    PreparedStatement ps = conn.prepareStatement("insert into t_money values(?,?)");
    for(int i = 0;i<10000000;i++){
    ps.setString(1, "里"+i);
    ps.setDouble(2, i);
    ps.addBatch();
    if(i%30000==0){
     ps.executeBatch();
     System.out.println(i);
    }
    }
     ps.executeBatch();
    tr.commit();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    session.close();
    找到了个这种方法,但感觉它是绕开了hibernate来,谁来给我讲讲啊