疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

hibernate大批量数据的添加


 

  hibernate大批量数据的添加,如果对象足够多内存肯定要溢出

  //大批量的数据添加

  for (int i=0; i<100; i++) {

  Student student = new Student();

  student.setName("张三" + i);

  session.save(student);

  //每20条更新一次

  if (i % 20 == 0) {

  session.flush();

  //清除缓存的内容

  session.clear();

  }

  }

  大批量数据添加时,会造成内存溢出的,因为save方法支持缓存,每save一个对象就往缓存里放,如果对象足够多内存肯定要溢出。一般的做法是先判断一下save了多少个对象,如果save了20个对象就对缓存手动的清理缓存,这样就不会造成内存溢出。

  注意:清理缓存前,要手动调用flush方法同步到数据库,否则save的对象就没有保存到数据库里。

  注意:大批量数据的添加还是不要使用hibernate,这是hibernate弱项。可以使用jdbc(速度也不会太快,只是比hibernate好一点),或者使用工具产品来实现,比如oracle的Oracle SQL Loader,导入数据特别快。