Hibernate中如何管理session和批量操作数据

来源:互联网 发布:磐海数据有限公司 编辑:程序博客网 时间:2024/05/16 11:07

  前边我们讲过了二级缓存,即它是一个进程几倍的缓存,只要当前程序在运行,这个缓存就一直存在的意思。二级缓存的存储介质可以是运行程序的内存也可以是硬盘,需要在二级缓存的插件的配置文件中进行存储硬盘的路径的配置才可以,如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的方法都涉及到缓存,容易造成资源的浪费

原创粉丝点击