用公司搭建的一个ssh 框架的时候,发现daoImpl 里面,组员都用不同的方式获取的session,大概了解了下情况,在这里记录一下。注意:版本是spring 2.5 和hibernate3 。spring 3.1 就没HibernateDaoSupport
*DaoImpl extends **,最后还是继承了 HibernateDaoSupport。
用到的session 方式有:
1. *.getSessionFactory.getCurrentSession() .
2. *.getSessionFactory.openSession();
3. *.getSession();
第一种: 会将session 与线程绑定,每次都从该线程去找,如果有,就拿过来用,没有就创建绑定。有几个 线程实现的方法,去看源码就有了。该线程需要hibernate.current_session_context_class进行配 置。这玩意儿,我们是让spring 进行管理,不用手动维护,比较方便,同一线程一直用一个线程, 节约资源
第二种:从新建立一个新的session,多次开启关闭,会耗内存资源,而且使用spring 管理的时候, 没有进行绑定。如果同一线程需要不同session ,可以尝试使用
第三种:从线程池里面拿session,但如果线程池没有,或者超过了,也会从新创建,这时候的session,会让
你手动进行关闭,麻烦,也耗资源感觉还是第一种使用方便点。
相关推荐
在Java的持久化框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它使得开发者可以使用面向对象的方式来操作数据库。"重写hibernate的session简单增删改查"是一个针对初学者的实践教程,旨在帮助理解如何...
- `getTransaction()`:获取与当前`Session`相关的`Transaction`对象,以便检查或控制事务状态。 - `close()`:关闭`Session`,释放与数据库的连接。 总的来说,`Hibernate Session`负责对象的持久化操作,而`...
Hibernate的Session接口是Java应用程序与Hibernate之间主要的运行时交互接口,它提供了对持久化对象的创建、读取和删除操作。Session的概念是基于对象的状态管理和数据库事务的,它的生命周期通常与一个物理事务绑定...
5. **查询(createQuery()、createSQLQuery()、find()等)**:Hibernate提供丰富的查询方式,如HQL(Hibernate Query Language)、 Criteria API 和原生SQL查询。createQuery()用于执行HQL,createSQLQuery()执行...
Hibernate 保证同一 Session 实例缓存中的每个数据库记录仅对应一个持久化实例。 - **行为**: 在 Session 清理缓存时,会根据持久化实例的属性变化来同步更新数据库。 **3. 脱管状态 (detached)** - **定义**: ...
本文将深入研究Hibernate中的`Session`和`Transaction`,这两个概念是理解Hibernate工作原理的关键。 首先,让我们了解`Session`。在Hibernate中,`Session`充当了应用程序与数据库之间的桥梁,它是持久化操作的...
如果对象的属性发生改变并希望更新到数据库,需要重新获得Session,并调用merge()或update()方法。 4. **删除状态(Removed State)**: 调用Session的remove()方法后,持久化对象会被标记为删除状态。这个对象的...
### Struts+Hibernate查询所有记录 #### 一、概述 在Java Web开发中,Struts与Hibernate是非常流行的框架组合,用于构建复杂的企业级应用。本文将详细介绍如何利用Struts和Hibernate来实现对Oracle数据库中所有...
### Hibernate 查询方式与批处理及连接池配置详解 #### 一、Hibernate 查询方式介绍 Hibernate 是一款优秀的 ORM(对象关系映射)框架,它能够极大地简化数据库操作,并提供多种查询方式来满足不同的业务需求。 #...
本教程聚焦于Hibernate中的Session接口以及get、load、persist这三个常用的方法,它们是 Hibernate 实现对象-关系映射(ORM)的核心组件。 首先,我们来理解Session接口。Session在Hibernate中扮演着数据库连接的...
- **ORM(Object Relational Mapping)映射**:这是Hibernate提供的核心功能,它允许将Java类映射到数据库表,将Java实例映射到数据库记录,将Java属性映射到数据库字段。 - **映射文件**:通常使用`.hbm.xml`文件...
- 读取(Read):`Session.get()`或`Session.load()`用于根据主键获取对象,而`Query`或`Criteria`接口则支持更复杂的查询。 - 更新(Update):通过`Session.update()`或`Session.saveOrUpdate()`更新已存在的...
在Hibernate框架中,Session是核心接口之一,它负责在应用程序与数据库之间建立桥梁,实现对象的持久化操作。本文将深入探讨Session中的四个基本操作:保存(save)、更新(update)、删除(delete)和查询(query)...
Hibernate是一种流行的Java ORM(对象关系映射)框架,它用于简化数据库操作,使得Java开发人员能够以面向对象的方式来操作关系数据库。使用Hibernate,开发者无需直接使用JDBC API,因为Hibernate封装了大部分...
5. 使用Session:通过SessionFactory获取Session实例,进行数据库操作。 案例中的源代码可能包括以下部分: - Entity类:代表数据库表,通常包含属性和getter/setter方法,以及可能的注解。 - Mapping文件或注解:...
在Java世界中,Hibernate提供了一种强大的方式来处理数据库操作,将复杂的SQL语句封装到对象中,使得代码更加简洁、可读性更强。本篇将深入探讨Hibernate方法的实现,包括其基本概念、配置、实体类、会话工厂以及...
同样,获取Session、开始事务,然后调用`session.update(o,id)`更新数据库中的记录,提交事务并关闭Session。 ```java public void update(Object o, Serializable id) { Session session = Hibernate...
4. **开启Session**:通过SessionFactory获取Session实例。 5. **进行数据库操作**:使用Session进行增删改查等操作。 6. **提交事务**:如果需要的话,提交事务。 7. **关闭资源**:最后记得关闭Session和...
例如,创建新记录时,可以通过Hibernate的Session接口保存实体对象;更新记录则对应于Session的update方法;删除操作使用Session的delete方法;查询通常借助Criteria、HQL或SQL语句,通过SessionFactory的...
1. 获取Session:SessionFactory的openSession()方法用于获取Session实例,它是与数据库交互的主要接口。 2. 开启事务:在执行任何数据库操作前,应先开启事务,通过Session的beginTransaction()方法实现。 五、...