微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hibernate管理Session和批量操作分析

这篇文章主要介绍了Hibernate管理Session和批量操作的技巧,包括Hibernate管理Session、批量处理数据等的常用技巧及注意事项,具有一定的参考借鉴价值,需要的朋友可以参考下

本文详细分析了Hibernate管理Session和批量操作的用法分享给大家供大家参考。具体分析如下:

Hibernate管理Session

Hibernate自身提供了三种管理Session对象的方法

① Session对象的生命周期与本地线程绑定

② Session对象的生命周期与JTA事务绑定

③ Hibernate委托程序管理Session对象的生命周期

在Hibernate的配置文件中,hibernate.current_session_context_class属性用于指定Session管理方式,可选值包括

① thread:Session对象的生命周期与本地线程绑定

② jta*:Session对象的生命周期与JTA事务绑定

③ managed:Hibernate委托程序来管理Session对象的生命周期

Session对象的生命周期与本地线程绑定:

如果把Hibernate配置文件的hibernate.current_session_context_class属性值设置为thread,Hibernate就会按照与本地线程绑定的方式来管理Session

Hibernate按以下规则把Session与本地线程绑定:

一个线程(thread)第一次调用SessionFactory对象的getCurrentSession()方法时,该方法会创建一个新的Session(sessionA)对象,把该对象与threadA绑定,并将session返回

当threadA再次调用SessionFactory对象的getCurrentSession()方法时,该方法将返回sessionA对象

当threadA提交sessionA对象关联的事务时,Hibernate会自动flush sessionA对象的缓存,然后提交事务,关闭session随心。当threadA撤销sessionA对象关联的事务时,也会自动关闭sessionA对象

若threadA再次调用SessionFactory对象的getCurrentSession()方法时,该方法会又创建一个新的Session(sessionB)对象,把该对象与threadA绑定,并将sessionB返回

批量处理数据

批量处理数据是指在一个事务中处理大量数据

在应用层进程批量操作,主要有以下方式:

① 通过Session

② 通过HQL

③ 通过StatelessSession

④ 通过JDBC API----推荐此种,因为速度最快

Session进行批量操作:

Session的save()及update()方法都会把处理的对象存放在自己的缓存中。如果通过一个Session对象来处理大量持久化对象,应该及时从缓存中清空已经处理完毕并且不会再访问的对象。具体的做法是在处理完一个对象或小批量对象后,立即调用flush()方法刷新缓存,然后再调用clear()方法情况缓存

通过Session来进行处理操作会受到以下约束:

需要在Hibernate配置文件中设置JDBC单次批量处理的数目,应保证每次向数据库发送的批量的sql语句数目与batch size属性一致

若对象采用"identity"标识生成器,则Hibernate无法在JDBC曾进行批量插入操作

进行批量操作时,建议关闭Hibernate的二级缓存

批量插入数据代码演示:

复制代码 代码如下:

News news = null;

for(int i = 0; i     news = new News();

    news.setTitle("--" + i);    session.save(news);

    if((i + 1) % 20 == 0) {

        session.flush();

        session.clear();

    }

}

上一篇:Java基础之ClassLoader详解下一篇:利用openoffice+jodconverter-code-3.0-bate4实现ppt转图片 热门搜索

批量分析 

批量操作 

管理分析 

全批量操作 

批量服务器管理 

相关文章

Hibernate管理Session和批量操作分析

2021-10-12阅读(3697)评论(0)推荐()

这篇文章主要介绍了Hibernate管理Session和批量操作的技巧,包括Hibernate管理Session、批量处理数据等的常用技巧及注意事项,具有一定的...

hibernate批量操作实例详解

2021-09-19阅读(2985)评论(0)推荐()

这篇文章主要介绍了hibernate批量操作,结合实例形式分析了Hibernate实现批量插入,更新及删除等操作的具体实现技巧,需要的朋友可以参考下

Hibernate批量处理海量数据的方法

2021-10-19阅读(8847)评论(0)推荐()

这篇文章主要介绍了Hibernate批量处理海量数据的方法,较为详细的分析了Hibernate批量处理海量数据的原理与相关实现技巧,需要的朋友可以参考下

深入浅析TomCat Session管理分析

2021-10-13阅读(3806)评论(0)推荐()

这篇文章主要介绍了深入浅析TomCat Session管理分析,需要的朋友可以参考下

Hibernate基于ThreadLocal管理Session过程解析

2021-11-12阅读(4359)评论(0)推荐()

这篇文章主要介绍了Hibernate基于ThreadLocal管理Session过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习...

Hibernate实现批量添加数据的方法

2021-11-08阅读(8703)评论(0)推荐()

这篇文章主要介绍了Hibernate实现批量添加数据的方法,详细分析了基于Hibernate执行批量添加操作的具体步骤与相关实现代码,需要的朋友可以参考下

Hibernate用ThreadLocal模式(线程局部变量模式)管理Session

2021-10-11阅读(7872)评论(0)推荐()

今天小编就为大家分享一篇关于Hibernate用ThreadLocal模式(线程局部变量模式)管理Session,小编觉得内容挺不错的,现在分享给大家,具有很好...

取消

有人回复邮件通知

提交评论

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐