没有合适的资源?快使用搜索试试~ 我知道了~
HQL批量插入、更新和删除
4星 · 超过85%的资源 需积分: 45 78 下载量 85 浏览量
2011-04-11
14:36:02
上传
评论 1
收藏 3KB TXT 举报
温馨提示
试读
2页
HQL批量插入、更新和删除 HQL批量插入、更新和删除 HQL批量插入、更新和删除
资源推荐
资源详情
资源评论
14.3.2 批量插入、更新和删除
在进行大批量数据操作的时候,如果处理不当,很可能会出现执行效率低下的情况。下面首先来介绍一下批量插入数据时应该注意的问题。
14.3.2.1 批量插入数据
在项目开发中,经常会遇到需要向数据库中一次插入大量数据的时候,如果在开发中一味地调用Session对象的save()方法向数据库中保存对象,那么就很可能会出现OutOfMemoryError(内存溢出)异常。
之所以出现这种情况是由于Hibernate缓存的影响。由于Hibernate的一级缓存是由Hibernate自己进行管理的,并且只会存在于内存中,所以,在调用save()方法的时候会将所保存的对象都缓存起来,这样当数量巨大的时候就会出现内存溢出的情况了。
为了避免内存溢出情况的发生,需要在调用save()方法的同时,阶段性地刷新和清空一级缓存。具体的处理方法请参考14.2.2节中的介绍。
虽然通过设置可以使二级缓存不会发生溢出,但在进行大批量的插入操作时,最好还是要禁用二级缓存,毕竟将对象保存到二级缓存是要耗费一定时间的,在禁用二级缓存后可以避免录入大量数据所带来的性能问题。
14.3.2.2 批量修改和删除
在Hibernate 2中,如果需要对任何数据进行修改和删除操作,都需要先执行查询操作,在得到要修改或者删除的数据后,再对该数据进行相应的操作处理。在数据量少的情况下采用这种处理方式没有问题,但需要处理大量数据的时候就可能存在以下的问题:
● 占用大量的内存。
● 需要多次执行update/delete语句,而每次执行只能处理一条数据。
以上两个问题的出现会严重影响系统的性能。因此,在Hibernate 3中引入了用于批量更新或者删除数据的HQL语句。这样,开发人员就可以一次更新或者删除多条记录,而不用每次都一个一个地修改或者删除记录了。
如果要删除所有的User对象(也就是User对象所对应表中的记录),则可以直接使用下面的HQL语句:
delete User
而在执行这个HQL语句时,需要调用Query对象的executeUpdate()方法,具体的实例如下所示:
String HQL="delete User";
Query query=session.createQuery(HQL);
在进行大批量数据操作的时候,如果处理不当,很可能会出现执行效率低下的情况。下面首先来介绍一下批量插入数据时应该注意的问题。
14.3.2.1 批量插入数据
在项目开发中,经常会遇到需要向数据库中一次插入大量数据的时候,如果在开发中一味地调用Session对象的save()方法向数据库中保存对象,那么就很可能会出现OutOfMemoryError(内存溢出)异常。
之所以出现这种情况是由于Hibernate缓存的影响。由于Hibernate的一级缓存是由Hibernate自己进行管理的,并且只会存在于内存中,所以,在调用save()方法的时候会将所保存的对象都缓存起来,这样当数量巨大的时候就会出现内存溢出的情况了。
为了避免内存溢出情况的发生,需要在调用save()方法的同时,阶段性地刷新和清空一级缓存。具体的处理方法请参考14.2.2节中的介绍。
虽然通过设置可以使二级缓存不会发生溢出,但在进行大批量的插入操作时,最好还是要禁用二级缓存,毕竟将对象保存到二级缓存是要耗费一定时间的,在禁用二级缓存后可以避免录入大量数据所带来的性能问题。
14.3.2.2 批量修改和删除
在Hibernate 2中,如果需要对任何数据进行修改和删除操作,都需要先执行查询操作,在得到要修改或者删除的数据后,再对该数据进行相应的操作处理。在数据量少的情况下采用这种处理方式没有问题,但需要处理大量数据的时候就可能存在以下的问题:
● 占用大量的内存。
● 需要多次执行update/delete语句,而每次执行只能处理一条数据。
以上两个问题的出现会严重影响系统的性能。因此,在Hibernate 3中引入了用于批量更新或者删除数据的HQL语句。这样,开发人员就可以一次更新或者删除多条记录,而不用每次都一个一个地修改或者删除记录了。
如果要删除所有的User对象(也就是User对象所对应表中的记录),则可以直接使用下面的HQL语句:
delete User
而在执行这个HQL语句时,需要调用Query对象的executeUpdate()方法,具体的实例如下所示:
String HQL="delete User";
Query query=session.createQuery(HQL);
资源评论
- ecfoarvin2020-05-22骗子,没用,还这么多分
- 冰思雨2013-11-29值得参考,可以看一看。
- moremore22014-07-01还不错,有用
- xb_smart2013-02-16非常有用,虽然是博客里面的,还是不错
空指针
- 粉丝: 57
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功