`
renzhiwen
  • 浏览: 1422 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类

hibernat中session.close()和releaseSession(session)的区别

阅读更多
Hibernate中有一个session.close()方法,可以关闭session,整合Spring之后,Spring中继承HibernateDaoSupport只有也有一个releaseSession(session)方法可以释放session,两者有什么区别呢?
我看了Spring2.5的部分源码,发现releaseSession(session)方法中也会调用session.close()方法,但是它调用之前做的操作我就没有看明白了,希望有研究的朋友能指点一下,或者大家讨论讨论啊。

Spring是全局性轻量级框架。 如果你用spring了 那你的项目基本都是spring控制的。  
包括hibernate里的session 在application没有关闭之前 spring会一直保留session的可用性。
也就是说spring缓存了备用的session 至于缓存的个数(不明) spring封装的close方法只是把你类中的session释放到了缓存中。。。
如果没有spring 那么在每次做完操作后session关闭。 再其他地方要用session 我们都要new一个。
有了spring后 它在项目发布启动时拿链接 之后一直循环着用。

releaseSession(session)是Spring对session操作进行的包装,而session.close()是Hibernate本身的实现。

releaseSession是spring里关闭非线程绑定session的方法,如果session绑定到spring的threadlocal,spring则不会关闭。
如果项目里没有对spring和hibernate非常了解的人,请不要随便调用底层的api
没有特殊的需要的话,spring+hibernate的应用里一般都不用通过写代码来关闭session

session.close(),releaseSession(session)都是关闭session,但releaseSession会判断你是否配置了事务处理,如果有,则不做任何处理.举例来说,假如你service层配置了事务,当你在dao层执行了session.close()程序会报session is close异常,而执行releaseSession(session)的话,则不会,如果你配置了事务,spring会自动帮你close seesion.

分享到:
评论
1 楼 zcs540061627 2011-12-19  
谢谢 分享

相关推荐

    hibernate session.doc

    在理解Hibernate框架中,Session是核心组件之一,它充当了应用程序和数据库之间的桥梁。`Session`接口提供了多种操作,如创建、更新、查询和删除数据,这些都是基于对象关系映射(ORM)的概念进行的。本篇文章将深入...

    JavaEE技术-自主学习.zip_hibernate_hibernate session _javaee映射.xml

    本教程聚焦于使用Hibernate进行数据操作,并通过XML文件来配置数据库连接和对象-关系映射。 首先,我们要理解数据库连接配置在Hibernate中的重要性。XML文件,通常命名为`hibernate.cfg.xml`,在这个文件中,我们会...

    JavaEE spring和Hibernate整合(没有hibernate.cfg.xml)

    通过这种方式整合Spring和Hibernate,我们可以避免直接在代码中创建SessionFactory和Session,从而减少资源泄漏的风险,同时借助Spring的事务管理能力,简化事务处理。这种整合方式使得系统更加模块化,更易于维护和...

    Hibernate连接Orcale.rar

    在IT行业中,数据库管理和持久化框架是至关重要的组成部分。Hibernate是一个流行的对象关系映射(ORM)框架,它允许Java开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。Oracle则是一款功能...

    Hibernate入门示例.doc

    在实际项目中,通常会结合Spring框架来管理Hibernate的SessionFactory和Session。通过Spring的`LocalSessionFactoryBean`和`HibernateTemplate`,可以实现更方便的事务管理和数据库操作。 总结,Hibernate作为强大...

    hibernate--3.Hibernate数据持久化(通过 Session 操纵对象)

    总的来说,Hibernate的Session接口提供了一套完整的对象持久化和数据库操作机制,使得开发者能够以面向对象的方式处理数据,极大地提高了开发效率和代码的可读性。通过深入理解和熟练运用Session,可以轻松地在Java...

    hibernate和session学习

    【hibernate与Session详解】 Hibernate 是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库...学习并熟练掌握Hibernate和Session,对于提升Java开发的效率和质量有着重要的作用。

    Hibernate的Session的javadoc

    Hibernate的Session接口是Java应用程序与Hibernate之间主要的运行时交互接口,它提供了对持久化对象的创建、读取和删除操作。Session的概念是基于对象的状态管理和数据库事务的,它的生命周期通常与一个物理事务绑定...

    Hibernate连接数据库.pdf

    在IT行业中,数据库管理和数据访问技术是至关重要的组成部分,而Hibernate作为Java领域中的一款优秀对象关系映射(ORM)框架,为开发者提供了方便、高效的数据库操作方式。本篇将深入探讨如何使用Hibernate进行...

    Hibernate-3.2.6.ga.zip下

    2. **Session 和 Transaction**:Hibernate 的Session接口提供了对数据库的操作,它负责管理对象的状态,并处理事务。Transaction接口则支持数据库事务的管理。 3. **查询语言(HQL)**:Hibernate 查询语言(HQL)...

    Hibernate关联映射.doc

    ### Hibernate关联映射详解 #### 一、单向多对一映射 在单向多对一的关系中,主要是指“多方”实体依赖于“一方”...此外,还需要注意配置文件中的各种属性设置,以确保Hibernate能够正确地将对象持久化到数据库中。

    Hibernate 入门操作.ppt

    session.close(); ``` 以上就是Hibernate入门的基本操作流程。在实际开发中,你还需要学习更高级的概念,如HQL(Hibernate Query Language)、Criteria API、Caching、Transactions等,以便更好地利用Hibernate的...

    JAVAHibernate框架应用.pdf

    session.close(); ``` 这段代码首先打开一个Session,然后开始事务,创建一个新的Student对象并设置其属性,调用Session的save方法保存对象到数据库,提交事务,最后关闭Session。 同样,查询、更新和删除操作也...

    hibernate连接数据[Mysql]的代码实例

    - 首先,你需要在项目中添加Hibernate和MySQL的JDBC驱动依赖。这通常通过Maven或Gradle的pom.xml或build.gradle文件完成。 - 添加Hibernate核心库: ```xml <groupId>org.hibernate <artifactId>hibernate-...

    hibernate code.rar

    在这个“hibernate code.rar”压缩包中,我们很可能会找到关于Hibernate的视频教程——"hibernate介绍与动手入门体验.avi",这个资源将引导我们深入了解Hibernate的核心概念和实际应用。 首先,让我们谈谈Hibernate...

    Hibernate框架.pdf

    1. **加载 Hibernate 类库和依赖库**:这通常意味着将 Hibernate 的 JAR 文件以及其依赖的数据库驱动等添加到项目的类路径中。例如,对于Oracle数据库,你需要包含`hibernate-core.jar`、`ojdbc.jar`等相关库。 2. ...

    Hibernate实现Oracle中数据的增删改查

    在实际项目中,通常会使用Spring等框架来管理事务和session,以便更好地控制并发和资源释放。 在案例中提到的`OracleTest`可能是一个包含测试用例的类,用于验证上述操作的正确性。这个类可能会包括JUnit测试方法,...

    hibernate.properties

    #hibernate.transaction.auto_close_session ## the Transaction API abstracts application code from the underlying JTA or JDBC transactions #hibernate.transaction.factory_class org.hibernate....

Global site tag (gtag.js) - Google Analytics