`
newleague
  • 浏览: 1505045 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

HttpSession与Hibernate中Session的区别

 
阅读更多

一、javax.servlet.http.HttpSession是一个抽象接口

它的产生:J2EE的Web程序在运行的时候,会给每一个新的访问者建立一个HttpSession,这个Session是用户身份的唯一表示。注意,是容器(Tomcat,Resin)自动创建的。

用途:存放这个用户的一些经常被用到的信息,例如:用户名,权限。例如在购物车程序里,存放用户买的商品。

销毁:一定时间(跟容器有关)内,用户无任何动作,session自动销毁。

得到的方法:
HttpSession session = request.getSession();
常用方法setAttribute
session.setAttribute(key,value);
这样在另一个jsp或者Servlet里,可以用
session.getAttribute(key);得到value
类似一个Map


二、org.hibernate.Session

它是hibernate操作数据库的一个句柄对象。它跟上面那个Session唯一的相似处就是名字有点像,其他没任何一样的地方。

一般的Hibernate程序中,Session由用户手动获取,手动关闭。
正规项目中,在业务层获取Session
Session session = HibernateSessionFactory.openSession();

然后把此session传给dao层,将数据持久化或其他的操作。
一次业务逻辑可能调用多个dao方法,例如银行转帐,是一个先减后增的过程,所以会调用2个dao里的方法(甲帐户减,乙帐户增)。因此,可以利用业务层产生的同一个Session来做这件事

a1和a2代表帐户实体。
a1是甲的,a2是乙的。
a1.setAcount(a1.getAcount()-1000);
a2.setAcount(a2.getAcount()+1000);
dao.update(a1,session);
dao.update(a2,session);
Transaction tx = session.beginTransaction();
tx.commit();

最后在业务层,将session关闭
session.close();
或者调用HibernateSessionFactory.closeSession(session);

最好能加上异常捕捉,之类,如产生异常,即时回滚。保证操作不出意外。

try{
...
tx.commit();
}catch(Exception e){
tx.rollback();
}finally{
HibernateSessionFactory.closeSession(session);
}

默认session的时间为20分钟,如果想在这之前清除的话可以使用Session.Abandorn方法

分享到:
评论

相关推荐

    Hibernate_Session_Transaction

    与Web开发中的`HttpSession`不同,`Hibernate Session`与JDBC的`Connection`更为相似,负责处理数据的持久化操作。`Session`具有短暂的生命周期,通常在一次数据库事务的开始和结束之间创建和关闭。 `Session`具有...

    Hibernate体系结构的概要图

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

    Eclipse中Hibernate简单配置和使用

    同时,Hibernate的session不同于JSP应用中的HttpSession。 SessionFactory SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是...

    Hibernate 帮助文档

    需要注意的是,这里的“session”与Web开发中常用的`HttpSession`不同,它们在概念上有着本质的区别。 2. **SessionFactory接口**:主要负责初始化Hibernate环境以及创建`Session`对象。`SessionFactory`对象在整个...

    struts+hibernate查询所有记录

    4. **Session Factory** 和 **Session**:Hibernate中,`SessionFactory` 是创建 `Session` 的工厂,而 `Session` 是与数据库交互的基本单元。 #### 四、具体实现步骤 1. **配置Hibernate** - 创建Hibernate配置...

    “session已关闭”——解决方案

    在IT行业中,"session已关闭"是一个常见的错误提示,通常出现在Web应用开发中,特别是涉及到用户会话管理和服务器状态跟踪时。这个问题可能是由于多种原因引起的,包括但不限于:服务器配置问题、session过期、...

    springMVC+spring+Hibernate框架

    Spring MVC、Spring 和 Hibernate 是Java开发中非常流行的三大框架,它们共同构成了企业级Web应用的基础架构。Spring MVC作为Spring框架的一部分,主要负责处理HTTP请求和响应,提供模型-视图-控制器(MVC)设计模式...

    hibernate学习文档

    同时,Session 与 JSP 中的 HttpSession 完全不同,后者用于存储用户会话信息。 2. **SessionFactory 接口**:SessionFactory 是 Session 的工厂,它根据配置信息创建 Session 实例。SessionFactory 是重量级的,...

    Hibernate 文档.doc

    此外,Hibernate中的Session与JSP中的HttpSession不同,前者特指Hibernate的会话,后者则专指用户会话。 2. **SessionFactory接口** SessionFactory接口负责初始化Hibernate框架,充当数据存储源的代理,创建...

    SSH笔记-管理Session和批量操作数据库

    - Hibernate的Session是与数据库交互的主要接口,它负责持久化对象的创建、加载、更新和删除。 - Session支持一级缓存,可以有效减少对数据库的直接访问,提高性能。 - 使用`Session.beginTransaction()`开始事务...

    hibernate(api 介绍).docx

    3. org.hibernate.Session Interface:和我们前面所学的 HttpSession 没有任何关系。我们在 Hibernate 应用中使用最广泛的接口,也被称为持久化管理器,提供了相关的数据库操作,比如添、更、删、加、查等基本操作。...

    jsp+hibernate实现的购物车系统

    3. **Session和Transaction**:Hibernate中的Session是与数据库交互的主要接口,负责保存和检索对象;Transaction则是数据库操作的单元,确保数据的一致性。 4. **CRUD操作**:Create(创建)、Read(读取)、...

    struts2+Hibernate3写的注册登录的页面

    在Hibernate3中,DAO通常会使用Session的 CRUD(Create, Read, Update, Delete)方法操作数据库。 6. **安全考虑**:注册登录系统必须考虑安全性问题。例如,密码应该在存储前进行加密,防止明文泄露。此外,登录时...

    hibernate初级教程图解

    - 在Hibernate中,`Session`的概念与JSP中的`HttpSession`不同,需要注意区分。 - **用途**:`Session`主要用于执行持久化操作,如保存、更新、删除和加载实体对象等。 ##### 3.2 SessionFactory接口 - **定义**:...

    hibernate简介及特例

    同时,它与Web应用中的HttpSession不同,不要混淆两者。 2. SessionFactory接口:SessionFactory是Session的工厂,负责创建Session实例。它是一个重量级对象,通常一个应用只需要一个SessionFactory,因为它与...

    JAVA学习资料-Hibernate简介.doc

    此外,Hibernate的Session不应与Web应用中的HttpSession混淆。 2. **SessionFactory接口**:SessionFactory是一个工厂接口,负责初始化Hibernate并创建Session对象。它是一个重量级的组件,通常一个项目只有一个...

    J2EE企业级项目开发-3期(KC007) 5.3 探究Hibernate之核心接口文档.doc

    此外,Hibernate的Session不应与Web应用中的HttpSession混淆,后者用于管理用户的会话状态。 2. **SessionFactory接口**: SessionFactory接口是Hibernate的工厂类,它负责初始化和管理Hibernate环境。...

    “Hibernate持久化技术在J2EE框架中的应用”学习报告

    此外,这里的Session不同于HTTPSession,它是针对Hibernate的特定概念。 2. SessionFactory接口:SessionFactory是Hibernate的核心,它是线程安全的,负责初始化和管理Session。一个SessionFactory对应一个数据库...

    想hibernate样的cayenne技术

    在 Web 应用中,还可以通过 `ServletUtil.getSessionContext(session)` 从 HttpSession 中获取预设的 DataContext。 总的来说,Cayenne 提供了一个强大的、易于使用的 ORM 解决方案,特别适合小型系统开发,减少了...

Global site tag (gtag.js) - Google Analytics