`
fanjf
  • 浏览: 332742 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

Hibernate向数据库中批量插入数据

 
阅读更多

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;

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

分享到:
评论

相关推荐

    Hibernate下数据批量处理解决方案

    在上述例子中,当尝试向数据库插入100,000条数据时,由于默认情况下Hibernate会将所有持久化对象保留在一级缓存中,随着数据量的增加,内存消耗也会迅速增长,最终导致内存溢出。因此,我们需要对一级缓存进行管理。...

    往数据库插入数据,相同的不插入

    ### 往数据库插入数据,相同的不插入 在Java开发中,常常会遇到需要将一系列数据插入数据库的需求。但在实际操作过程中,为了避免重复数据的插入,我们需要实现一种机制来判断待插入的数据是否已存在于数据库中。这...

    hibernate数据库相关操作步骤

    **hibernate数据库相关操作步骤** Hibernate是一款强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用中操作数据库的简便方法。通过使用Hibernate,开发人员可以避免直接编写SQL语句,而是通过面向...

    Hibernate中大量数据的更新

    在这些场景中,如果使用传统的 INSERT 语句逐条插入数据,会导致性能下降和内存溢出问题。因此,使用批量更新机制可以大大提高性能和降低内存占用。 Hibernate 的批量更新机制 Hibernate 提供了两种批量更新机制:...

    Hibernate插入数据

    以上就是关于“Hibernate插入数据”的核心知识点,希望对你在学习过程中有所帮助。在共享和交流知识的过程中,我们可以共同进步,不断提升IT技能。同时,为了保护个人作品,使用水印是一种有效的手段,但也要确保不...

    Hibernate批量处理数据

    在批量插入数据时,直接使用循环逐一保存的方式容易导致内存溢出。这是因为Hibernate的Session维护了一个一级缓存,用于存储当前会话期间的所有实体对象。当对象数量过大时,会导致内存不足。为了解决这一问题,可以...

    C#Hibernate数据库海量读写快速存储

    1. 批量操作:在处理大量数据时,避免单条插入或更新,应采用批量处理,将多条数据一次性提交,以减少网络通信和数据库事务开销。 2. 数据分片:将大数据分散到多个数据库或表中,通过分布式处理提高读写速度。 3. ...

    HQL批量插入、更新和删除

    在批量插入数据时,需要注意内存管理问题。如果一次性插入大量数据,可能会导致`OutOfMemoryError`异常。为了避免这种情况的发生,在进行批量插入操作时,可以采用以下策略: 1. **分批提交**:将大批量的数据分割...

    Java中Hibernate的批量插入

    然而,在处理大量数据的批量操作时,如批量插入、更新或删除,如果不采取适当的策略,可能会导致性能问题甚至出现内存溢出异常。针对这种情况,Hibernate提供了一些批量处理的解决方案。 批量插入是处理大量数据...

    计算机软件-编程源码-向数据库中导入数据的几种方法.zip

    在编程领域,向数据库中导入数据是常见的任务,无论是在数据迁移、数据分析还是应用开发过程中。这个压缩包文件“计算机软件-编程源码-向数据库中导入数据的几种方法.zip”很可能包含了不同方法的源码示例,帮助我们...

    完整XML读取数据,省市区三级插入数据库的Hibernate的实现。

    6. **插入数据**:在`Session`实例上开启事务,通过`save()`或`saveOrUpdate()`方法逐个保存省市区实体。注意,由于层级关系,需要先保存省份,再保存城市(关联父省),最后保存区县(关联父市)。 7. **提交事务*...

    2022年Hibernate下数据批量处理Java教程.docx

    在批量插入数据时,我们可以使用以下代码: ``` Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for (int i=0; i; i++) { Customer customer = new Customer(...)...

    计算机软件-编程源码-关于向数据库中导入数据的几种方法.zip

    源码是程序员与计算机沟通的语言,通过源码可以实现各种功能,包括向数据库中导入数据。本文将深入探讨几种常见的向数据库导入数据的方法,以帮助开发者更好地理解和应用这些技术。 1. SQL INSERT 语句: SQL...

    浅析Hibernate下数据批量处理方法.doc

    标题"浅析Hibernate下数据批量处理方法"和描述中提到,早期的Hibernate在批量插入时可能存在效率问题,但最新版本已经进行了优化,例如通过设置`batch_size`参数来提高批量处理的性能。`batch_size`设置的是JDBC...

    精通hibernate3.0--java数据库持久层开发实践(付京周)2

    - **批量操作**:通过一次执行多个操作来减少与数据库的交互次数,比如批量插入、批量更新等。 ### 结论 通过学习《精通Hibernate3.0—Java数据库持久层开发实践》,开发者不仅可以深入了解Hibernate的核心原理和...

    从excel向数据库导入数据

    标题 "从Excel向数据库导入数据" 涉及到的是数据处理的一个常见场景,即如何将Excel文件中的数据有效地导入到数据库系统中。这在数据分析、数据迁移或系统集成等项目中非常常见。以下是关于这个主题的详细知识讲解:...

    java数据库增删改查操作实例(hibernate原理)

    在Java编程中,数据库操作是不可或缺的一部分,尤其是在企业级应用开发中。本示例通过一个通用的DAO(Data Access Object)类,展示了如何在不依赖Hibernate等ORM框架的情况下,进行数据库的增删改查操作。这有助于...

    java中excel数据写入数据库

    在Java编程中,将Excel数据写入数据库是一项常见的任务,特别是在数据处理和导入导出场景。这个场景通常涉及使用特定库来解析Excel...在实际应用中,还需要考虑性能优化,如批量插入数据,以及数据验证和错误处理等。

    hibernate(一对多,多对一映射)操作

    在Java的持久化框架中,Hibernate是一个非常重要的工具,它为开发者提供了强大的对象关系映射(ORM)功能,使得在Java应用中操作数据库变得更加简单。本文将深入探讨Hibernate中的一对多和多对一映射关系,并通过一...

Global site tag (gtag.js) - Google Analytics