`
younglibin
  • 浏览: 1195966 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

向数据库中批量插入数据

阅读更多

Hibernate的方法:
  如果采用如下方法(注意这中方法不行);

         Session session=SessionFactory.openSession();
         Transaction tx=session.beginTransaction();
         for(int i=0;i<100000;i++){
              User u= new User(......);
              session.save(u);
          }
          tx.commit();
          session.close;

随着程序进行会出现内存溢出的错误 OutOfMemoryException  这是用为hibernate的session持有一个一级缓存,所有的User对象将都在session级别进行了缓存;

 

解决:

 

Session session=HibernateUtil.currentSession();
Transaction tx=session.beginTransaction();
for(int i=0;i<100000;i++){
  User u= new User();
  u.setName("*******"+i);
  u.setAge(i);
  session.save(u);
  if(i%20 == 0){
   session.flush();
   session.clear();
  }
  tx.commit();
  sHibernateUtil.closeSession();
}

在上程序中,手动将Session处的缓存数据写入数据库;并且清空session;

除了要对Session级别的缓存进行处理外;还应该通过配置来关闭SessionFactory的二级缓存:
hibernate.cache.use.second_level_cache   false;

二级缓存也有可能引发异常;

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics