解决方案 »

  1.   

    hibernate批量删除或更新优化, 有意想不到的结果,也许这个可以实现jdbc啊executeSQL
      

  2.   

    使用jdbcTemplate.execute(String sql);
      

  3.   

    本人在此之前没有接触过hibernate批量更新,经大神指点,马上查阅资料,发现资料中的批量更新,得先把数据一次性查询出来,可我的十万条数据不能做到一次性查询啊!能告诉具体怎么做吗?
      

  4.   

    对于这种list的数据更新,我一般的做法是先拼凑多条sql语句数组,然后批量执行sql数组。
    这种方法可以提高io速率,但浪费了内存。
      

  5.   

    用PreparedStatement的executeBatch来做
      

  6.   

    http://blog.csdn.net/uohzoaix/article/details/7372427  这里有你需要的
      

  7.   

    jdbc批处理非常适合你这种情况,并且效率极高,大致代码如下
    conn = JdbcUtil.getConnection();
    i++;
    String sql1 = "insert into user(name,password,email,birthday)
      values('kkk','123','[email protected]','1978-08-08')";
    String sql2 = "update user set password='123456' where id=3";
    st = conn.createStatement();
    st.addBatch(sql1);  //把SQL语句加入到批命令中
    st.addBatch(sql2);  //把SQL语句加入到批命令中
    if(i%10000==0)
         st.executeBatch();
      

  8.   


    这里的批量更新操作where条件是固定的,比如更新年龄大于1的记录的年龄都加1,where 条件就是age>1;而我的where 条件是不一样的,我要实现的是一个类似将id为1的年龄更新为2,将id为2的年龄更新为5,将id为3的年龄更新为2.....,
      

  9.   

    jdbc批量删除修改更新,比框架的快一些  或者说存储过程   在操作的时候
    记得及时的释放资源!
      

  10.   

    PreparedStatement  的 executeBatch 是应该的, Hibernate 本身也是依赖于 JDBC 的嘛。总之我们要避免不必要的修改和减少网络通信的次数还要“提示数据库我们批量执行不需要每次重新编译SQL语句”,像Oracle 自动对编译过的SQL 缓存的技术并不见得所有数据库都默认开启需要我们通过 JDBC PreparedStatement 明确地提示数据库这样去做。如果本来就是批量处理的,或许可以用数据库提供的从文件导入的工具来做,当然这就不通用了,主要是给夜间批量导入导出数据准备的,每家厂商的做法不一样,还可能要求导入和导出的双方版本相同。