`
xiaotao.2010
  • 浏览: 217052 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate-学习笔记03-getCurrentSession和openSession区别

阅读更多

SessionFactory得到Session的方法有两种getCurrentSession和openSession两种

 

 

更据Hibernate文档说明,在Hibernate3.2之后不再建议使用openSession,推荐使用getCurrentSession方法来获得Session对象。分别来说下两种获得Session的区别:

 

openSession:

表示创建一个 Session ,使用后需要关闭这个 Session

getCurrentSession:

表示当前环境没有 Session 时,则创建一个,否则不用创建

 

两方法的区别:

            ①、 openSession 永远是每次都打开一个新的 Session, getCurrentSession 不是,是从 上下文 找、只有当前没有 Session 时,才创建一个新的 Session

            ②、 OpenSession 需要手动 close,getCurrentSession 不需要手动 close ,事务提交自动 close

            ③、 getCurrentSession 界定事务边界

 

上下文:

所指的上下文是指 hibernate 配置文件 (hibernate.cfg.xml) 中的“ current_session_context_class ”所指的值: ( 可取值: jta|thread|managed|custom.Class)

< property name = "current_session_context_class" > thread </ property 
 

  常用的是:

①、 thread 是从 上下文 找、只有当前没有 Session 时,才创建一个新的 Session ,主要从数据界定事务

②、 jta :主要从分布式界定事务,运行时需要 Application Server 来支持 (Tomcat 不支持

 

                   小概念:

                            jta Java Transaction API

                jpa Java Persistence API

 

③、 managed: 不常用

④、 custom.Class: 不常用

 

 

 

 

两方法的写法:

openSession:

SessionFactory sf = new Configuration().configure().buildSessionFactory();

Session session = sf.openSession();
session.beginTransaction();
session.save(student);
session.getTransaction().commit();
session.close();
 

 

getCurrentSession:

 

SessionFactory sf = new Configuration().configure().buildSessionFactory();
//拿到当前session ,若是没有则创建一个session,若存在则拿当前的session
Session session = sf.getCurrentSession();
		
session.beginTransaction();
session.save(student);
session.getTransaction().commit();
 

 

 

分享到:
评论

相关推荐

    SessionFactory.getCurrentSession与openSession的区别

    标题中的“SessionFactory.getCurrentSession与openSession的区别”是关于Hibernate框架中的两个关键操作,它们都是用于在Hibernate中获取数据库会话的。理解它们的区别对于优化数据访问性能和管理事务至关重要。 ...

    getCurrentSession 与 openSession() 的区别

    在Java的Hibernate框架中,`getCurrentSession()` 和 `openSession()` 都是用于获取与数据库交互的Session对象,但它们之间存在显著的区别。理解这些差异对于优化数据访问性能和管理事务至关重要。 首先,`...

    hibernate-spring整合

    在Spring中,我们可以使用SessionFactory的openSession()或getCurrentSession()方法获取Session实例。 4. **事务管理**: Spring提供PlatformTransactionManager接口,可以用来管理数据库事务。在Hibernate整合中,...

    基于IDEA的SSH项目之五:集成Hibernate--程序包

    在本教程中,我们将深入探讨如何在基于IntelliJ IDEA(IDEA)的SSH(Spring、Struts2和Hibernate)项目中集成Hibernate框架。SSH是一个流行的企业级Java应用开发框架组合,而Hibernate作为ORM(对象关系映射)工具,...

    hibernate学习笔记.

    【hibernate学习笔记】 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。以下是对Hibernate的学习要点的详细解释: 1. **建立第一个Hibernate版本的HelloWorld** - **...

    新Hibernate SessionFactory().getCurrentSession()猫腻

    至于压缩包中的文件名称列表,"新建文本文档"和"ssh2"并不直接与Hibernate或`getCurrentSession()`相关,可能是其他内容或资料,如SSH2可能是指Secure Shell的版本2,用于远程访问和管理服务器,与数据库操作无关。...

    hibernate 学习笔记

    hibernate 学习笔记: 了解hibernate的基本概念 配置hbm.xml cfg.xml 快速入门案例3: 从domain-xml-数据库表 hibernate的核心类和接口 openSession()和getCurrentSession() 线程局部变量模式 transaction事务 在web...

    hibernate学习笔记

    本文主要围绕Hibernate 3.2的学习笔记,涵盖其基本概念、配置、映射机制以及核心开发接口。 一、O/R Mapping简介与优点 1. O/R Mapping(对象关系映射)是为了解决面向对象编程与关系型数据库之间的差异,通过在...

    hibernate 4.3.10 版本的笔记

    ### Hibernate 4.3.10 版本的笔记知识点详解 #### 一、环境配置与集成 在开始深入探讨Hibernate 4.3.10的相关特性之前,我们需要确保已经正确地配置好了开发环境。根据描述中的部分信息,这里重点介绍如何在...

    Java Hibernate4天学习笔记整理可用于提交作业

    在这四天的学习笔记中,我们将深入探讨Hibernate的核心概念、配置、实体管理以及查询语言,帮助你全面掌握这个流行的持久层框架。 一、Hibernate 概述 Hibernate 提供了一种映射机制,将Java类与数据库表进行对应,...

    2023年hibernate知识点详解王成敏.doc

    Hibernate 的操作包括添加、删除、修改和查询等。下面是一个简单的添加操作的示例: ```java Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Book book =...

    ssh中getCurrentSession的使用

    2. **为什么使用getCurrentSession()**:与直接调用`openSession()`创建新的Session相比,`getCurrentSession()`有以下优势: - 它能够自动管理Session的生命周期,比如在请求结束时关闭Session,避免资源泄露。 -...

    Hibernate3.6(开发必看).pdf

    开发者可以利用Hibernate Tools来生成和管理Hibernate映射文件和配置文件。 Hibernate 3.6版本还介绍了对于JPA 2.0的支持。通过引入hibernate-jpa-2.0-api-1.0.0.Final.jar,Hibernate可以作为JPA 2.0实现来使用,...

    SSH整合学习笔记之spring与hibernate整合(二)之c3p0

    在本学习笔记中,我们将重点关注Spring与Hibernate的整合,特别是如何利用c3p0作为数据库连接池来提高应用程序的性能和资源管理。 首先,Spring是一个强大的轻量级框架,它提供了依赖注入(DI)和面向切面编程(AOP)等...

    Struts2整合Hibernate32开发注册登录系统

    - 在项目的lib目录下添加Struts2.0和Hibernate3.2的相关jar包。 2. **配置Hibernate** - 在src目录下创建`hibernate.cfg.xml`文件,配置数据库连接信息。 ```xml &lt;?xml version='1.0' encoding='UTF-8'?&gt; &lt;!...

    spring配置sessionFactory(spring3.2.3+hibernate4.2.2)

    在Java Web开发中,Spring和Hibernate是两个非常重要的框架,它们分别用于管理和持久化数据。本文将详细讲解如何在Spring 3.2.3版本中配置SessionFactory,以便整合Hibernate 4.2.2,实现对数据库操作的高效管理。...

Global site tag (gtag.js) - Google Analytics