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的区别”是关于Hibernate框架中的两个关键操作,它们都是用于在Hibernate中获取数据库会话的。理解它们的区别对于优化数据访问性能和管理事务至关重要。 ...
在Java的Hibernate框架中,`getCurrentSession()` 和 `openSession()` 都是用于获取与数据库交互的Session对象,但它们之间存在显著的区别。理解这些差异对于优化数据访问性能和管理事务至关重要。 首先,`...
在Spring中,我们可以使用SessionFactory的openSession()或getCurrentSession()方法获取Session实例。 4. **事务管理**: Spring提供PlatformTransactionManager接口,可以用来管理数据库事务。在Hibernate整合中,...
在本教程中,我们将深入探讨如何在基于IntelliJ IDEA(IDEA)的SSH(Spring、Struts2和Hibernate)项目中集成Hibernate框架。SSH是一个流行的企业级Java应用开发框架组合,而Hibernate作为ORM(对象关系映射)工具,...
【hibernate学习笔记】 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。以下是对Hibernate的学习要点的详细解释: 1. **建立第一个Hibernate版本的HelloWorld** - **...
至于压缩包中的文件名称列表,"新建文本文档"和"ssh2"并不直接与Hibernate或`getCurrentSession()`相关,可能是其他内容或资料,如SSH2可能是指Secure Shell的版本2,用于远程访问和管理服务器,与数据库操作无关。...
hibernate 学习笔记: 了解hibernate的基本概念 配置hbm.xml cfg.xml 快速入门案例3: 从domain-xml-数据库表 hibernate的核心类和接口 openSession()和getCurrentSession() 线程局部变量模式 transaction事务 在web...
本文主要围绕Hibernate 3.2的学习笔记,涵盖其基本概念、配置、映射机制以及核心开发接口。 一、O/R Mapping简介与优点 1. O/R Mapping(对象关系映射)是为了解决面向对象编程与关系型数据库之间的差异,通过在...
### Hibernate 4.3.10 版本的笔记知识点详解 #### 一、环境配置与集成 在开始深入探讨Hibernate 4.3.10的相关特性之前,我们需要确保已经正确地配置好了开发环境。根据描述中的部分信息,这里重点介绍如何在...
在这四天的学习笔记中,我们将深入探讨Hibernate的核心概念、配置、实体管理以及查询语言,帮助你全面掌握这个流行的持久层框架。 一、Hibernate 概述 Hibernate 提供了一种映射机制,将Java类与数据库表进行对应,...
Hibernate 的操作包括添加、删除、修改和查询等。下面是一个简单的添加操作的示例: ```java Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Book book =...
2. **为什么使用getCurrentSession()**:与直接调用`openSession()`创建新的Session相比,`getCurrentSession()`有以下优势: - 它能够自动管理Session的生命周期,比如在请求结束时关闭Session,避免资源泄露。 -...
开发者可以利用Hibernate Tools来生成和管理Hibernate映射文件和配置文件。 Hibernate 3.6版本还介绍了对于JPA 2.0的支持。通过引入hibernate-jpa-2.0-api-1.0.0.Final.jar,Hibernate可以作为JPA 2.0实现来使用,...
在本学习笔记中,我们将重点关注Spring与Hibernate的整合,特别是如何利用c3p0作为数据库连接池来提高应用程序的性能和资源管理。 首先,Spring是一个强大的轻量级框架,它提供了依赖注入(DI)和面向切面编程(AOP)等...
- 在项目的lib目录下添加Struts2.0和Hibernate3.2的相关jar包。 2. **配置Hibernate** - 在src目录下创建`hibernate.cfg.xml`文件,配置数据库连接信息。 ```xml <?xml version='1.0' encoding='UTF-8'?> <!...
在Java Web开发中,Spring和Hibernate是两个非常重要的框架,它们分别用于管理和持久化数据。本文将详细讲解如何在Spring 3.2.3版本中配置SessionFactory,以便整合Hibernate 4.2.2,实现对数据库操作的高效管理。...