在向大家详细介绍Session之前,首先让大家了解下如何获得Session对象,然后全面介绍Hibernate Session实例。
Session(org.hibernate.Session)
(1) 单线程的,短寿命的对象,代表了一次会话的过程。实际上是把一个JDBC Connection打包了,它可以包含一些持久化对象的缓存看作介于数据连接与事物管理一种中间接口.
在Hibernate的设计者中.他们将session看作介于数据连接与事物管理的一种中间接口或者想象成一个持久对象的缓冲区hibernate能检测到这些持久对象的改变,并及时刷新数据库
(2) 每一个Hibernate Session实例和一个数据库事务绑定通常将每一个Hibernate Session实例和一个数据处理库事务绑定就是说,每执行一个数据库事务(操作),都应该先创建一个新的Hibernate Session实例.
如果事务执行中出现异常,应该撤消事务.不论事务执行成功与否,最后都应该调用Session的close()方法,从而释放Hibernate Session实例占用的资源.
(3) 如何获得Session对象
首先创建SessionFactory对象应用服务器如果访问多个数据源时,则应该产生多个SessionFactory;
但是仅仅为了服务与某个请求时,不要创建一个新的SessionFactory,因为创建SessionFactory需要消耗大量的资源.然后根据SessionFactory再创建Session对象
- Session session=sessionFactory.openSession();
- Transaction tx;
- try{
- tx=session.beginTransaction();//开始一个事务
- .......//执行事务
- tx.commit();
- }catch(Exception e){//如果出现异常就撤消事务
- if(tx!=null)
- tx.rollback();
- throw e;
- }
- finally//不管事务执行成功与否,最后都关闭Session并且放在finally中以提高安全性
- session.close();
【编辑推荐】