`
Supanccy2013
  • 浏览: 225035 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hibernate批量插入、删除、更新。

阅读更多
一:效率最不好的批量插入、更新。
    //批量创建Person;批量创建一千个人到Person表中
    public void batchSavePerson(){
    	Configuration cfg = new Configuration().configure();
    	SessionFactory sessionFactory = cfg.buildSessionFactory();
    	Session session = sessionFactory.openSession();
    	Transaction ts = session.beginTransaction();
    	Address address = new Address("河南省汝州市杨楼乡");
    	Person p;
    	for(int i=0; i < 3000; i++){
    		p = new Person();
    		p.setAddress(address);
    		p.setName("陈超阳"+i);
    		p.setAge(26);
    		session.save(p);
    		//20个清空session缓冲,防止内存溢出
    		if(i%20 == 0){
    			session.flush();
    			session.clear();
    		}
    	}
        ts.commit();
        session.close();
        sessionFactory.close();
    }
    //批量更新;批量更新Person表中所有的记录
    public void batchUpdatePerson(){
    	Configuration cfg = new Configuration().configure();
    	SessionFactory sessionFactory = cfg.buildSessionFactory();
    	Session session = sessionFactory.openSession();
    	Transaction ts = session.beginTransaction();
    	ScrollableResults persons = session.createQuery("from Person")
    			                    .setCacheMode(CacheMode.IGNORE)
    			                    .scroll(ScrollMode.FORWARD_ONLY);
    	int count = 0;
    	//遍历persons表中的全部记录
    	while(persons.next()){
    		Person p = (Person)persons.get(0);
    		p.setName("chenchaoyang" + count);
    		if(++count %20 == 0){
    			session.flush();
    			session.clear();
    		}
    	}
        ts.commit();
        session.close();
        sessionFactory.close();
    }


二:hql批量插入、更新,效率较高,常用方法
    //hql批量更新
    public void batchUpdateByHql(){
    Configuration cfg = new Configuration().configure();
    SessionFactory sessionFactory = cfg.buildSessionFactory();
    Session session = sessionFactory.openSession();
    Transaction ts = session.beginTransaction();
        
        String hqlUpdate = "update Person set name = :newName";
        int updateEntites = session.createQuery(hqlUpdate)
                    .setString("newName", "yangui")
                    .executeUpdate();
    session.flush();
    ts.commit();
    session.close();
    sessionFactory.close();
    }
   
    //hql批量删除
    public void batchDeleteByHql(){
    Configuration cfg = new Configuration().configure();
    SessionFactory sessionFactory = cfg.buildSessionFactory();
    Session session = sessionFactory.openSession();
    Transaction ts = session.beginTransaction();
        String hqlDelete = "delete Person";
        int updateEntites = session.createQuery(hqlDelete)
                    .executeUpdate();
    session.flush();
    ts.commit();
    session.close();
    sessionFactory.close();
    }
分享到:
评论

相关推荐

    Hibernate+JDBC实现批量插入、更新及删除的方法详解

    Hibernate+JDBC实现批量插入、更新及删除的方法详解 概述:本文主要介绍了Hibernate+JDBC实现批量插入、更新及删除的方法,通过实例形式详细分析了Hibernate与JDBC针对数据库的批量操作相关实现技巧。 知识点一:...

    HQL批量插入、更新和删除

    ### HQL批量插入、更新和删除 #### 一、概述 在进行数据库操作时,批量处理数据是一项常见的需求。为了提高效率并减少网络传输开销,HQL(Hibernate Query Language)提供了一种灵活的方式来实现这一目标。HQL是...

    Java中Hibernate的批量插入

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

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

    对于更新和删除操作,可以使用`scroll()`方法,这在Hibernate 2.1.6或更高版本中是支持的。`scroll()`方法返回一个`ScrollableResults`对象,允许我们以游标方式处理结果集,这在处理大量数据时非常有效。同样,我们...

    Hibernate批量处理数据

    因此,本文将详细介绍Hibernate如何高效地进行批量数据处理,包括批量插入、批量更新和批量删除。 #### 二、批量插入 在批量插入数据时,直接使用循环逐一保存的方式容易导致内存溢出。这是因为Hibernate的Session...

    Hibernate批量处理

    批量处理对于需要在短时间内处理大量数据的应用尤其重要,如批量更新、批量插入或批量删除等场景。 #### 二、批量处理的必要性 在实际开发过程中,当需要处理大量数据时,传统的逐条处理方式不仅占用大量的内存...

    hibernate批量操作实例详解

    Hibernate批量插入的常见问题在于,如果一次性保存大量对象,会占用大量内存,可能导致`OutOfMemoryException`,因为默认情况下,Session一级缓存会存储所有待持久化的对象。为了避免这种情况,我们需要定期将缓存...

    Hibernate

    本文将深入探讨在Hibernate框架下,如何有效地处理大规模数据的批量插入、更新和删除操作。 #### 批量数据插入 传统的Hibernate数据插入方式往往采用单次插入单个实体对象的方式,这在处理小规模数据时效率尚可,...

    hibernate-extensions-2.1.3.zip ,middlegen for hibernate

    - Batch处理:支持批量插入、更新和删除操作,提高大数据量操作的性能。 - Event监听器:允许在特定的持久化操作前后执行自定义逻辑,如事务处理、日志记录等。 - 邮件服务:集成邮件发送功能,实现业务流程中的...

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

    - 增加:在保存父实体时,可以同时保存其关联的子实体,Hibernate会自动处理子实体的插入操作。对于多对一关系,只需要在父实体中设置子实体的引用即可。 - 查询:可以通过HQL(Hibernate Query Language)或者 ...

    hibernate3.5完整jar

    10. **批处理操作**:通过设置批处理大小,Hibernate可以优化批量插入、更新和删除的性能,减少与数据库的交互次数。 11. **JPA支持**:虽然Hibernate最初是一个独立的ORM框架,但在3.5版本中,它也兼容Java ...

    hql批量删除

    下面将详细介绍HQL在批量删除和批量插入数据方面的知识点。 批量删除数据: 在Hibernate中,如果要批量删除数据,使用Session的delete()方法来删除每一个对象将是非常低效的,尤其是当要删除的对象数量很多时。为此...

    Hibernate框架jia包

    - 批量操作:利用批处理更新或删除,减少数据库交互次数。 -延迟加载(Lazy Loading):只在需要时加载关联对象,避免数据冗余。 8. **HQL和Criteria API**: HQL是面向对象的查询语言,类似于SQL但更接近Java。...

    Hibernate 中文参考文档

    为了提高性能,Hibernate提供了批量插入、更新和删除功能,以及延迟加载、批处理等优化策略。合理使用这些特性可以显著提升应用性能。 综上所述,Hibernate中文参考文档详尽地阐述了如何使用Hibernate进行数据持久...

    Hibernate Developer Guide

    Hibernate支持批量插入和更新操作,这对于处理大量数据非常有用。同时介绍了StatelessSession和Hibernate查询语言(HQL)用于DML操作。 ### 锁机制 Hibernate中的锁机制用来管理并发事务,以确保数据的一致性。文档...

    hibernate包详解+hibernatePPT

    2. **批处理**:批量插入、更新和删除数据,减少数据库交互次数。 3. **延迟加载(Lazy Loading)**:只在真正需要时加载关联对象,减少内存消耗。 **六、hibernatePPT** 提供的`hibernatePPT`可能是对Hibernate...

    MLDN_Hibernate开发实战讲解视频教程

    9. 批量操作:为了提高性能,Hibernate支持批量插入、更新和删除,以及批处理查询。 10. JPA集成:Hibernate也实现了Java Persistence API(JPA),提供了一种标准的方式来使用ORM服务。 通过"MLDN_Hibernate开发...

    Hibernate框架技术课件ppt

    学习者将学习如何执行批量插入、更新和删除,以及如何使用Transaction接口进行事务控制,保证数据的一致性。 通过这个完整的Hibernate框架技术课件,你将能够全面掌握Hibernate的核心功能和最佳实践,从而在实际...

    hibernate开发包

    8. 批量操作:Hibernate支持批量插入、更新和删除,可以显著提高性能,例如`StatelessSession`用于执行此类操作。 9. JPA兼容性:Hibernate既是独立的ORM框架,也实现了Java Persistence API(JPA),因此具备跨...

Global site tag (gtag.js) - Google Analytics