`

Hibernate获得Session的两个方法

阅读更多
Hibernate获得Session的两个方法
大家都知道,使用Hibernate对数据进行操作最重要的是获得一个Session。



首先获得一个SessionFactory,通过.config().buildSessionFactory(),获得一个SessionFactory



进而取得Session的方法在Hibernate里有两种:



1:Session session = sessionFactory.openSession();

    该种方法是创建一个新的session,不论当前的环境中是否已经创建,都会创建;

    且当session提交成功后,需要手动关闭这个session;



2:Session session = sessionFactory.getCurrentSession();

    该方法是获取当前环境中的session,若环境中已经存在session,则取出当前的;若无session则创建一个新的,

    只要当前的session提交后,该session会自动关闭,其后再使用getCurrentSession()方法,则是创建一个新的session;





      使用以上两种方式还需要注意的是事务控制,如果使用第一种方法,openSession()也许会导致数据的不一致,

      例如在用户管理功能模块中,我们对用户的各种操作都需要做日志记录,此时要两张数据表同时提交成功,否则都不进行数据的写入;所以我们要使用第二种方式来取得session。



特别强调:这两种取得Session的方法不能混用。原因很简单,在Hibernate中,Session是一个接口。两个获取session的方法并非是同一个实现,故不可混用!
分享到:
评论

相关推荐

    Hibernate体系结构的概要图

    这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。  SessionFactory接口 SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建...

    Hibernate3.1_学习源码

    01 01Hibernate_Handwork : 手工配置使用Hibernate,其中详细标了Hibernate进行持久化的一些过程,因为是Hibernate的入门实例,所以注释很详细,其中有session的关闭后重建问题。 02 02Hibernate_UseMyEclipse: 利用...

    深入浅出Hibernate中文版 part1

    由于文件太大,所以分成了两个压缩包 目录 第1部分 持久层 第1章 面向应用的持久层设计 1.1 持久层概述 1.2 持久层设计 1.3 持久层设计与ORM 1.4 持久层框架概述 第2部分 Hibernate 第2章 Hibernate概述 第3...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    本章介绍Hibernate提供的两个工具hbm2java和hbm2ddl,它们能简化软件开发过程。 4.1 创建对象-关系映射文件 83 4.1.1 定制持久化类 85 4.1.2 定制数据库表 88 4.2 建立项目的目录结构 90 4.3 运行hbm2java工具 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     15.3.4 把多对多关联分解为两个一对多关联  15.4 小结  15.5 思考题 第16章 Hibernate的检索策略  16.1 Hibernate的检索策略简介  16.2 类级别的检索策略  16.2.1 立即检索  16.2.2 延迟检索  16.3 一对多...

    Hibernate中的query 分页.doc

    这两种方法都可以取到一定范围内的数据,用来数据分页显示。那么两者区别,以及两者的效率如何? 答:1.scroll是用JDBC2.0的可滚动结果集实现;query.setMaxResults();query.setFirstResult()是数据库SQL语句实现。...

    Hibernate+中文文档

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作...

    第24次课-1 Spring与Hibernate的整合

    HibernateTemplate的灵活访问方式是通过如下两个方法完成的: Object execute(HibernateCallback action) List execute(HibernateCallback action) 开发者通过HibernateCallback,可以完全使用Hibernate灵活的方式来...

    hibernate3.2中文文档(chm格式)

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作...

    HibernateAPI中文版.chm

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作...

    jsp:用hibernate分页显示上一页,下一页,首页,末页

    这是一个类,可以通用,只要传入两个参数即可,一个是个query,一个是操作的字符;Query query是hibernate中session创建的query;字符char ch代表操作:‘a’就是all全部,'n'就是next下一页,'u'就是up上一页;'e'...

    hibernate 3中的缓存小结

    Session为应用程序提供了两个管理缓存的方法: evict(Object obj):从缓存中清除参数指定的持久化对象。 clear():清空缓存中所有持久化对象。 2.3. 二级缓存的管理: 2.3.1. Hibernate的二级缓存策略的一般过程如下...

    Spring + Hibernate + Struts

    比如说hibernate,我问一个同学session接口的get和load方法有何异同,这位同学含糊了半天没答上来,连这两个方法干什么的都不知道,你是怎么把代码写出来的。问另一个精通struts的同学,HttpServletRequest的...

    Hibernate中文详细学习文档

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作...

    Hibernate 中文 html 帮助文档

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作单元(Unit...

    精通Hibernate:对象持久化技术第二版part3

    本章介绍Hibernate提供的两个工具hbm2java和hbm2ddl,它们能简化软件开发过程。 4.1 创建对象-关系映射文件 83 4.1.1 定制持久化类 85 4.1.2 定制数据库表 88 4.2 建立项目的目录结构 90 4.3 运行hbm2java工具 ...

    hibernate总结

    d) 在同一个session的缓存中,具有相同OID的持久态对象,只有一个(同一个session的一缓存中,不可能同时有两个OID相同的同一个持久化类的对象存在) 3. 游离态,脱管 a) 不在一级缓存之中 b) 数据库可能有记录和它...

    hibernate 体系结构与配置 参考文档(html)

    在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作单元(Unit...

    最全Hibernate 参考文档

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scopes) 11.1.1. 操作单元...

Global site tag (gtag.js) - Google Analytics