一:效率最不好的批量插入、更新。
//批量创建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针对数据库的批量操作相关实现技巧。 知识点一:...
### HQL批量插入、更新和删除 #### 一、概述 在进行数据库操作时,批量处理数据是一项常见的需求。为了提高效率并减少网络传输开销,HQL(Hibernate Query Language)提供了一种灵活的方式来实现这一目标。HQL是...
然而,在处理大量数据的批量操作时,如批量插入、更新或删除,如果不采取适当的策略,可能会导致性能问题甚至出现内存溢出异常。针对这种情况,Hibernate提供了一些批量处理的解决方案。 批量插入是处理大量数据...
对于更新和删除操作,可以使用`scroll()`方法,这在Hibernate 2.1.6或更高版本中是支持的。`scroll()`方法返回一个`ScrollableResults`对象,允许我们以游标方式处理结果集,这在处理大量数据时非常有效。同样,我们...
因此,本文将详细介绍Hibernate如何高效地进行批量数据处理,包括批量插入、批量更新和批量删除。 #### 二、批量插入 在批量插入数据时,直接使用循环逐一保存的方式容易导致内存溢出。这是因为Hibernate的Session...
批量处理对于需要在短时间内处理大量数据的应用尤其重要,如批量更新、批量插入或批量删除等场景。 #### 二、批量处理的必要性 在实际开发过程中,当需要处理大量数据时,传统的逐条处理方式不仅占用大量的内存...
Hibernate批量插入的常见问题在于,如果一次性保存大量对象,会占用大量内存,可能导致`OutOfMemoryException`,因为默认情况下,Session一级缓存会存储所有待持久化的对象。为了避免这种情况,我们需要定期将缓存...
本文将深入探讨在Hibernate框架下,如何有效地处理大规模数据的批量插入、更新和删除操作。 #### 批量数据插入 传统的Hibernate数据插入方式往往采用单次插入单个实体对象的方式,这在处理小规模数据时效率尚可,...
- Batch处理:支持批量插入、更新和删除操作,提高大数据量操作的性能。 - Event监听器:允许在特定的持久化操作前后执行自定义逻辑,如事务处理、日志记录等。 - 邮件服务:集成邮件发送功能,实现业务流程中的...
- 增加:在保存父实体时,可以同时保存其关联的子实体,Hibernate会自动处理子实体的插入操作。对于多对一关系,只需要在父实体中设置子实体的引用即可。 - 查询:可以通过HQL(Hibernate Query Language)或者 ...
10. **批处理操作**:通过设置批处理大小,Hibernate可以优化批量插入、更新和删除的性能,减少与数据库的交互次数。 11. **JPA支持**:虽然Hibernate最初是一个独立的ORM框架,但在3.5版本中,它也兼容Java ...
下面将详细介绍HQL在批量删除和批量插入数据方面的知识点。 批量删除数据: 在Hibernate中,如果要批量删除数据,使用Session的delete()方法来删除每一个对象将是非常低效的,尤其是当要删除的对象数量很多时。为此...
- 批量操作:利用批处理更新或删除,减少数据库交互次数。 -延迟加载(Lazy Loading):只在需要时加载关联对象,避免数据冗余。 8. **HQL和Criteria API**: HQL是面向对象的查询语言,类似于SQL但更接近Java。...
为了提高性能,Hibernate提供了批量插入、更新和删除功能,以及延迟加载、批处理等优化策略。合理使用这些特性可以显著提升应用性能。 综上所述,Hibernate中文参考文档详尽地阐述了如何使用Hibernate进行数据持久...
Hibernate支持批量插入和更新操作,这对于处理大量数据非常有用。同时介绍了StatelessSession和Hibernate查询语言(HQL)用于DML操作。 ### 锁机制 Hibernate中的锁机制用来管理并发事务,以确保数据的一致性。文档...
2. **批处理**:批量插入、更新和删除数据,减少数据库交互次数。 3. **延迟加载(Lazy Loading)**:只在真正需要时加载关联对象,减少内存消耗。 **六、hibernatePPT** 提供的`hibernatePPT`可能是对Hibernate...
9. 批量操作:为了提高性能,Hibernate支持批量插入、更新和删除,以及批处理查询。 10. JPA集成:Hibernate也实现了Java Persistence API(JPA),提供了一种标准的方式来使用ORM服务。 通过"MLDN_Hibernate开发...
学习者将学习如何执行批量插入、更新和删除,以及如何使用Transaction接口进行事务控制,保证数据的一致性。 通过这个完整的Hibernate框架技术课件,你将能够全面掌握Hibernate的核心功能和最佳实践,从而在实际...
8. 批量操作:Hibernate支持批量插入、更新和删除,可以显著提高性能,例如`StatelessSession`用于执行此类操作。 9. JPA兼容性:Hibernate既是独立的ORM框架,也实现了Java Persistence API(JPA),因此具备跨...