用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的时候报错了,有什么方法可以解决吗?
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的时候报错了,有什么方法可以解决吗?
解决方案 »
- 新手
- 系统交互问题
- JSP转换成HTML
- jbpm工作流引擎问题
- JSP参数传递问题
- 从网页读取的JSON数据,在andriod显示时出现问题。
- error和exception有什么区别?
- ParserUtils: warning org.xml.sax.SAXParseException: 有效的文档必须有<!DOCTYPE 声明
- gbk的问题
- 怪事年年有,今天特别多!我配置WIN2000 + JB8 + Weblogic7 可以在JB8里编写和上传Bean给Weblogic7了,但我的JSP部分却编译不过了?
- JavaEE怎么搭建开发环境
- 做用户登录系统有个小问题,请大家帮帮忙看看该怎么处理,谢谢
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来,谁来给我讲讲啊