Session对象的生命周期

lHibernate中数据库连接最终包装成Session对象,使用Session对象可以对数据库进行操作。

lSession对象获取方式:

•加载所有配置信息得到Configuraction对象

•由Configuraction对象,创建出SessionFactory对象

•由SessionFactory对象,在连接池中获取某个数据连接对象

•将连接对象包装成Session对象返回给开发者使用

lSession对象在数据库连接池中对应的连接对象是唯一的,使用完毕后,关闭Session时,对应绑定的数据库连接对象也将被释放,交由数据库连接池进行维护,清理本次操作过程中Session对象所携带的所有数据。

l操作过程中,如果不关闭Session对象,将带来灾难性的后果,一旦数据库连接池中的连接无法正常回收,当达到数据库连接池上限时,将无法获取可用的连接对象。

lSession对象的生命周期交由开发者管理是存在风险性的,因此Hibernate提供了3种Session对象的管理模式

•Session对象生命周期由开发者管理

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

•Session对象生命周期由本地线程管理

lJTA(Java Transaction API ),Java事务架构,允许用户进行分布式事务处理(Spring中讲解)

•事务传播属性

•事务嵌套的模拟(2PC协议)

本地线程管理Session对象

l本地线程管理Session对象即使用当前应用程序的线程绑定一个固定的Session对象,无论在何处,只要获取Session对象,获取到的均为同一对象

l本地线程管理实现机制

•在Hibernate中创建本地线程管理Map<Thread,Session>

•当出现新的线程时,如果在线程中获取Session对象将调用map的获取方法,传入当前线程对象作为key

•如果未发现对应的Session对象,从SessionFactory处获取一个全新的Session对象,然后添加到map中

•如果发现了对应的Session对象,直接使用

•线程消亡时执行对应的关闭Session的操作

l本地线程管理Session对象的生命周期

•Session对象的初始化操作发生在第一次调用Session对象时

•在线程对象未销毁前,可以使用Session提供的各种操作

•当线程对象销毁时,关闭对应的Session

l注意:如果手工关闭Session对象,会造成当前线程丢失对Session对象的控制权,关闭Session操作之后,所有获取当前线程绑定Session对象的操作将无法正常运行,抛出异常。使用本地线程管理Session不能手工执行close()操作。

本地线程管理Session对象步骤

l在hibernate.cfg.xml配置文件中,设置Session对象由本地线程维护

l在应用程序中获取当前绑定Session对象

l注意:

•本地Session绑定当前线程,如果当前线程发生意外,可能会造成对应的Session对象无法被释放,永久性占用数据库连接

•(警告)本地Session通常只应用于数据层开发,尽量不要挪至其它层,否则将出现无法控制的现象

hibernate框架学习之Session管理的更多相关文章

  1. hibernate框架学习笔记6:事务

    MySQL的事务.JDBC事务操作: 详细见这篇文章:比较详细 http://www.cnblogs.com/xuyiqing/p/8430214.html 如何在hibernate中配置隔离级别: ...

  2. [ SSH框架 ] Hibernate框架学习之二

    一.Hibernate持久化类的编写规范 1.什么是持久化类 Hibernate是持久层的ORM影射框架,专注于数据的持久化工作.所谓持久化,就是将内存中的数据永久存储到关系型数据库中.那么知道了什么 ...

  3. j2ee开发之hibernate框架学习笔记

    hibernate框架技术重点学习笔记 1.针对不同的数据库,有不同的数据库实现类,使其符号对应的数据库? mysqlDaoImpl oracleDaoImpl ... ... 2.对象和表记录的转换 ...

  4. 为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?

    既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的 ...

  5. hibernate框架学习笔记3:API详解

    Configuration对象: package api; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configur ...

  6. [ 学习笔记 ] Hibernate框架学习之一

    一.JavaEE开发三层结构和三大框架的对应关系: Struts2框架 -> 表现层 web层(MVC是表现层的设计模型) 业务层 service层 Hibernate框架 -> 持久层 ...

  7. [ SSH框架 ] Hibernate框架学习之三

    一.表关系的分析 Hibernate框架实现了ORM的思想,将关系数据库中表的数据映射成对象,使开发人员把对数据库的操作转化为对对象的操作,Hibernate的关联关系映射主要包括多表的映射配置.数据 ...

  8. hibernate框架学习之核心API

    ConfigurationSessionFactorySessionTransactionQueryCriteria Configuration Configuration对象用于封装Hibernat ...

  9. hibernate框架学习笔记1:搭建与测试

    hibernate框架属于dao层,类似dbutils的作用,是一款ORM(对象关系映射)操作 使用hibernate框架好处是:操作数据库不需要写SQL语句,使用面向对象的方式完成 这里使用ecli ...

随机推荐

  1. css3 transition和animation的区别与联系

    1. transition 一定时间之内,一组css属性变换到另一组属性的动画展示过程. 属性: transition-property:动画展示哪些属性,可以使用all关键字: transition ...

  2. Linux记录- Linux下限制rm -rf /

    操作说明: 为了防止在linux下执行操作的时候误操作rm -rf /,或者rm -rf 一些比较重要的目录,我们做以下操作来限制rm的删除 1.下载源码安装包 https://raw.githubu ...

  3. Web API中的模型验证

    一.模型验证的作用 在ASP.NET Web API中,我们可以使用 System.ComponentModel.DataAnnotations 命名空间中的属性为模型上的属性设置验证规则. 一个模型 ...

  4. angular,vue,react的基本语法—双向数据绑定、条件渲染、列表渲染、angular小案例

    基本语法: 1.双向数据绑定 vue 指令:v-model="msg" react constructor(){ this.state{ msg:"双向数据绑定" ...

  5. HTML汇总以及CSS的一些开端

    一.HTML初探 1.HTML(HyperText Markup Language):超文本标记语言指的就是超跃了txt文件,能够在里面进行一些例如:就是指页面内可以包含图片.链接 .甚至音乐.程序等 ...

  6. 【leetcode-73】 矩阵置零

    给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [   [1,1,1],   [1,0,1],   [1,1,1] ] 输 ...

  7. ASP.NET Identity V2简单介绍

    Microsoft.AspNet.Identity是微软在MVC 5.0中新引入的一种membership框架,和之前ASP.NET传统的membership以及WebPage所带来的SimpleMe ...

  8. HTTP Method小记

    HTTP 0.9 这个版本只有GET方法 HTTP 1.0 这个版本有GET HEAD POST这3个方法 HTTP 1.1 这个版本是当前版本,包含GET HEAD POST OPTIONS PUT ...

  9. C# string 保留数字英文字母

    using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressi ...

  10. php 随机生成数字字母组合

    直接上代码: function getRandomString($len, $chars=null) { if (is_null($chars)) { $chars = "abcdefghi ...