hibernate中的session介绍
来源:互联网 发布:无线信道检测软件 编辑:程序博客网 时间:2024/05/16 23:59
session直白点说就是代表一次会话,这次会话中,我们可以执行各种我们需要的操作。比如插入数据,更新数据等等。同时我们所有的对数据库所有的操作都是在session的支持下进行,所以session很重要,接来下就单独介绍下hibernate的的session.
一、hibernate执行的过程:
->读取配置文件(hibernate.cfg.xml)创建Configuration对象
->读取对象映射文件(xxx.hbm.xml或者@Entity对象)创建SessionFactory对象
->通过SessionFactory创建Session对象
->开启事物
->在session的基础上执行CRUD操作
->提交事物
->关闭session,结束执行
但是需要注意的是在session基础上执行操作前后分别需要开启事物和关闭事物。创建和销毁都是比较消耗资源,所以一个数据库通常只创建一个sessionFactory供使用。session其实就相当于JDBC中的Connection对象。
二、hibernate中的transaction
上面提到的事物就是transaction,hibernate对数据库中数据的操作都是封装在transaction中的,而且transaction默认是非自动提交的,所以如果我们对数据库进行各种操作,但是如果没有提交事务,然而所有的操作并没有作用。
当然我们也可以设置事物为自动提交,方式是调运session的doWork方法,然后获得Connection之后在设置成自动提交。
session.doWork(new Work() { public void execute(Connection connection) throws SQLException { connection.setAutoCommit(true); }});
三、session详解
1、session的获取
我们有两种方式可以获取hibernate中的session,一种是通过SessionFactory的getCurrentSession()方法,另一种是SessionFactory的openSession()方法。两种方式都可以获得session,但是如果使用getCurrentSession()的方式,需要在配置文件(hibernate.cfg.xml)中配置自动管理session的属性:<property name="current_session_context_class">thread</property>;
而如果使用openSession()则无需配置该属性。
2、getCurrentSession和openSession的区别
openSession是每次直接打开一个新的session,而且session不会自动关闭,需要手动关闭session,如果不手动关闭,后果可能是连接溢出。
getCurrentSession是自动管理session,每次获取并不都是打开一个新的session,而是使用的是单例模式,而且如果在事物回滚或者提交以后,session通常会自动关闭。
session和hibernate对象的三种状态息息相关,关于hibernate的三种状态,可以看一下这篇文章:http://blog.csdn.net/dyy_gusi/article/details/46414657
- hibernate中的session介绍
- hibernate学习笔记3----hibernate中的session接口介绍
- Hibernate的Session介绍
- Hibernate session详细介绍
- Hibernate中的Session管理
- Hibernate中的Session管理
- hibernate中的Session.flush()
- Hibernate中的Session
- Hibernate中的Session
- hibernate中的session
- hibernate中的session
- hibernate中的session用法
- hibernate中的Session详解
- Hibernate 中的 Session 接口
- Hibernate中的Session详解
- Hibernate中的Session
- hibernate中的Session对象
- Hibernate中的Session对象
- Floyd-Warshall算法---求解任意两节点的最短路径
- 14级俱乐部成员
- hdu1100
- 安装CentOS7后修复windows开机启动项
- Linux值OSS的Mixer编程
- hibernate中的session介绍
- 程序猿必备
- 多线程01-NSThread 基本了解和一些总结1
- 看代码
- adb shell screenrecord /sdcard/myscreenrecord.mp4 录视频
- Qt 5.5 beta - Qt Quick Extras - CircularGauge
- keil CMSIS PACK制作中文 手册
- Lintcode前序遍历和中序遍历树构造二叉树
- fastjson 使用方法