Hibernate中如何管理session和批量操作数据
2017-08-11 10:41
381 查看
前边我们讲过了二级缓存,即它是一个进程几倍的缓存,只要当前程序在运行,这个缓存就一直存在的意思。二级缓存的存储介质可以是运行程序的内存也可以是硬盘,需要在二级缓存的插件的配置文件中进行存储硬盘的路径的配置才可以,如ehcache的diskstore节点。二级缓存分为内置和外置的,内置缓存是不可以卸载的,当Hiberante初始化时会将hbm.xml文件中的内容和预定义的SQL进行加载;外置缓存指的是一些Hibernate的插件,如ehcache。这些插件的使用方法是:先导入ehcache的jar包,然后在cfg.xml文件中启用外置二级缓存,设置外置二级缓存的使用的驱动类,设置二级缓存中可以存入的对象和集合就可以使用了。外置二级缓存的架构包括类缓存区域(存放普通的类)、集合缓存区域(存放类对象的集合属性的对象)、查询缓存区域(存放HQL或者QBC操作的对象缓存的区域,这个区域要想使用必须在cfg.xml文件中声明启动查询缓存,并且在使用的时候调用query对象的setCacheable(true)或者Criteria对象的setCacheabl(true)方法才可以)和更新时间戳缓存区域(记录外置二级缓存的时间表)。还讲了缓存插件ehcache的配置文件ehcache.xml,其中主要是配置了内存中数据存入硬盘的路径,和通过命名的方式区分了各个缓存区域的名称。
今天我们来讲一讲如何管理session对象和进行批量操作数据
1.管理session对象
Hibernate自身提供了三种管理session对象的方法
① 将session对象的声明周期与本地线程绑定
② 将session对象的声明周期与JTA事务绑定起来
③ Hibernate委托其他程序来管理session对象的生命周期
具体操作我们在cfg.xml文件中设置<property name="hibernate.current_session_context_class">thread/jta*/managed</property>这三个属性来对应前边三种管理session的方式。
需要注意的是:我们将session与本地线程绑定的方式,在提交或者回滚事务之后就不必在手动的调用session.close()方法了,因为commit方法中已经进行了关闭。
2. 批量操作数据
批量操作数据值得是:批量更新、插入、删除数据。常用的方法有session、HQL、JDBC API,我们推荐使用JDBC API当中的方法来执行批量操作。
因为session和HQL的方法都涉及到缓存,容易造成资源的浪费。
今天我们来讲一讲如何管理session对象和进行批量操作数据
1.管理session对象
Hibernate自身提供了三种管理session对象的方法
① 将session对象的声明周期与本地线程绑定
② 将session对象的声明周期与JTA事务绑定起来
③ Hibernate委托其他程序来管理session对象的生命周期
具体操作我们在cfg.xml文件中设置<property name="hibernate.current_session_context_class">thread/jta*/managed</property>这三个属性来对应前边三种管理session的方式。
需要注意的是:我们将session与本地线程绑定的方式,在提交或者回滚事务之后就不必在手动的调用session.close()方法了,因为commit方法中已经进行了关闭。
2. 批量操作数据
批量操作数据值得是:批量更新、插入、删除数据。常用的方法有session、HQL、JDBC API,我们推荐使用JDBC API当中的方法来执行批量操作。
因为session和HQL的方法都涉及到缓存,容易造成资源的浪费。
相关文章推荐
- Hibernate学习笔记----Session管理和批量操作
- hibernate如何进行批量的数据操作,防止内存溢出
- Hibernate管理Session和批量操作
- hibernate的二级缓存操作及session的管理方法及数据的批量处理
- Hibernate管理Session和批量操作
- 海牛大数据教你Hadoop 如何批量操作多台服务器
- Hibernate、批量操作数据
- Hibernate中使用Session操作数据以及部分简单HQL(hibernate query language)
- ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据
- ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据
- hibernate 作批量数据操作心得
- Microsoft Dynamics CRM 2015 数据管理 之 如何批量导入数据到 正式区(二)系统自带示例数据 安装及教学
- 解决Hibernate的session.save/update/delete操作无效问题(事务管理)
- Hibernate、批量操作数据
- Microsoft Dynamics CRM 2015 数据管理 之 如何批量导入数据到 正式区(一)
- Hibernate中数据的存储和批量操作
- 如何管理hibernate的session
- Hibernate、批量操作数据
- Hibernate、批量操作数据
- 在spring MVC和hibernate项目中如何实现hibernate的session在请求发起时开启数据渲染后自动关闭