hinernate 批量处理

在hibernate2.0的处理方法为 下面的代码

在hibernate的配置文件中添加
   hibernate.jdbc.batch_size=20


批量处理的方法为
  Session session = sessionFactory.openSession();
  Transaction tx = session.beginTransaction();
  for ( int i=0; i<100000; i++ ) {
  Customer customer = new Customer(.....);
  session.save(customer);
  if ( i % 20 == 0 ) {
  //flush 插入数据和释放内存:
  session.flush(); session.clear(); }
  }
  tx.commit();
  session.close();

 

这样属于批量插入吗?貌似根本没有batch来处理嘛,jdbc里面是先加入到batch里面,然后再提交的。

 

  • public void createRolePermissionBySql(final String roleId,final String[] permIds){   
  •            
  •         getHibernateTemplate().execute(new HibernateCallback() {   
  •             public Object doInHibernate(Session session)   
  •                     throws HibernateException, SQLException {   
  •                 if(permIds==null||permIds.length==0)   
  •                           return null;   
  •                 Connection conn=session.connection();   
  •                 PreparedStatement ps=null;   
  •                 String sql=" insert into base_role_permission (ROLE_PERM_ID,PERM_ID,ROLE_ID,CREATE_DATE)" +   
  •                            " values (?,?,?,?) ";   
  •                 ps=conn.prepareStatement(sql);   
  •                 if(log.isDebugEnabled())   
  •                        log.debug("batch add base_role_permission:"+sql);   
  •                 UUIDHexGenerator uuidGenerator=null;   
  •                 for(String permId:permIds){   
  •                     uuidGenerator=new UUIDHexGenerator();   
  •                     ps.setString(1,uuidGenerator.generate(nullnull).toString());   
  •                     ps.setString(2,permId);   
  •                     ps.setString(3, roleId);   
  •                     ps.setDate(4, DateUtils.getJavaSqlDate());   
  •                     ps.addBatch();   
  •                 }   
  •                 int[] counts=ps.executeBatch();   
  •                 ps.close();   
  •                 session.flush();   
  •                 session.close();   
  •                 return null;   
  •             }   
  •         });   
  •     }   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值