Hibernate管理Session和批量操作分析
|
本文详细分析了Hibernate管理Session和批量操作的用法。分享给大家供大家参考。具体分析如下: Hibernate管理Session Hibernate自身提供了三种管理Session对象的方法
Session对象的生命周期与本地线程绑定:
批量处理数据 批量处理数据是指在一个事务中处理大量数据 Session进行批量操作: Session的save()及update()方法都会把处理的对象存放在自己的缓存中。如果通过一个Session对象来处理大量持久化对象,应该及时从缓存中清空已经处理完毕并且不会再访问的对象。具体的做法是在处理完一个对象或小批量对象后,立即调用flush()方法刷新缓存,然后再调用clear()方法情况缓存 通过Session来进行处理操作会受到以下约束: 需要在Hibernate配置文件中设置JDBC单次批量处理的数目,应保证每次向数据库发送的批量的SQL语句数目与batch size属性一致 若对象采用"identity"标识生成器,则Hibernate无法在JDBC曾进行批量插入操作 进行批量操作时,建议关闭Hibernate的二级缓存 批量插入数据代码演示: session.save(news); 批量更新:在进行批量更新时,如果一下子把所有对象都加载到Session缓存,然后再缓存中一一更新,显然是不可取的 使用可滚动的结果集org.hibernate.ScrollableResults,该对象中实际上并不包含任何对象,只包含用于在线定位记录的游标。只有当程序遍历访问ScrollableResults对象的特定元素时,它才会到数据库中加载相应的对象 通过HQL进行批量操作: 注意:HQL只支持INSERT INTO ... SELECT形式的插入语句,但不支持INSERT INTO ... VALUES形式的插入语句。所以使用HQL不能进行批量插入操作 通过StatelessSession进行批量操作: 从形式上看,StatelessSession与Session的用法类似。StatelessSession与Session相比,有以下区别: StatelessSession没有缓存,通过StatelessSession来加载、保存或更新后的对象处于游离状态 希望本文所述对大家的Java程序设计有所帮助。 您可能感兴趣的文章:
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 详解Java中多线程异常捕获Runnable的实现
- java中javaBean与Bean的深入理解
- java – 为什么Tomcat找不到SMTPTransport(Session,URLName
- java – EasyMock.expect(…).times(…)与使用EasyMock.exp
- Java编程Iterator迭代器设计原理及实现代码示例
- java通过模拟post方式提交表单实现图片上传功能实例
- java – EclipseLink:没有名为EntityManager的持久性提供程
- Spring Boot 使用Druid详解
- java – Spring websocket发送给特定的人
- 在Java中调用方法后会发生什么
