HttpSession和Hibernate里的Session的区别。
他们是完全不同的2个对象
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方法
分享到:
相关推荐
在Java的持久化框架Hibernate中,`Session`和`Transaction`是两个至关重要的概念,它们在数据管理和事务处理中起到核心作用。这篇文章将深入解析这两个概念及其相关知识点。 `Session`是Hibernate提供的一种与...
这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。 SessionFactory接口 SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建...
同时,Hibernate的session不同于JSP应用中的HttpSession。 SessionFactory SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是...
Spring MVC、Spring 和 Hibernate 是Java开发中非常流行的三大框架,它们共同构成了企业级Web应用的基础架构。Spring MVC作为Spring框架的一部分,主要负责处理HTTP请求和响应,提供模型-视图-控制器(MVC)设计模式...
在IT行业中,"session已关闭"是一个常见的错误提示,通常出现在Web应用开发中,特别是涉及到用户会话管理和服务器状态跟踪时。这个问题可能是由于多种原因引起的,包括但不限于:服务器配置问题、session过期、...
- Hibernate的Session是与数据库交互的主要接口,它负责持久化对象的创建、加载、更新和删除。 - Session支持一级缓存,可以有效减少对数据库的直接访问,提高性能。 - 使用`Session.beginTransaction()`开始事务...
1. **Session 接口**:Session 是 Hibernate 的核心接口之一,它负责实际的数据操作,如保存(Save)、更新(Update)、删除(Delete)和加载(Load)对象。Session 对象与数据库连接密切相关,但它并不是线程安全的...
Struts2和Hibernate3是两种在Java Web开发中广泛应用的技术。Struts2是一个基于MVC(Model-View-Controller)架构的开源框架,用于构建可维护性和可扩展性优秀的Web应用。而Hibernate3则是一个对象关系映射(ORM)...
3. org.hibernate.Session Interface:和我们前面所学的 HttpSession 没有任何关系。我们在 Hibernate 应用中使用最广泛的接口,也被称为持久化管理器,提供了相关的数据库操作,比如添、更、删、加、查等基本操作。...
4. **Session Factory** 和 **Session**:Hibernate中,`SessionFactory` 是创建 `Session` 的工厂,而 `Session` 是与数据库交互的基本单元。 #### 四、具体实现步骤 1. **配置Hibernate** - 创建Hibernate配置...
需要注意的是,这里的“session”与Web开发中常用的`HttpSession`不同,它们在概念上有着本质的区别。 2. **SessionFactory接口**:主要负责初始化Hibernate环境以及创建`Session`对象。`SessionFactory`对象在整个...
3. **Session和Transaction**:Hibernate中的Session是与数据库交互的主要接口,负责保存和检索对象;Transaction则是数据库操作的单元,确保数据的一致性。 4. **CRUD操作**:Create(创建)、Read(读取)、...
此外,Hibernate中的Session与JSP中的HttpSession不同,前者特指Hibernate的会话,后者则专指用户会话。 2. **SessionFactory接口** SessionFactory接口负责初始化Hibernate框架,充当数据存储源的代理,创建...
此外,Hibernate的Session不应与Web应用中的HttpSession混淆。 2. **SessionFactory接口**:SessionFactory是一个工厂接口,负责初始化Hibernate并创建Session对象。它是一个重量级的组件,通常一个项目只有一个...
1. Session接口:Session是Hibernate的主要工作接口,它负责执行对象的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作,即CRUD。Session是非线程安全的,因此在一个线程中应避免共享Session对象...
- 在Hibernate中,`Session`的概念与JSP中的`HttpSession`不同,需要注意区分。 - **用途**:`Session`主要用于执行持久化操作,如保存、更新、删除和加载实体对象等。 ##### 3.2 SessionFactory接口 - **定义**:...
此外,Hibernate的Session不应与Web应用中的HttpSession混淆,后者用于管理用户的会话状态。 2. **SessionFactory接口**: SessionFactory接口是Hibernate的工厂类,它负责初始化和管理Hibernate环境。...
这个“javahibernate.rar”压缩包文件包含了基于SSH框架和Hibernate实现的统计在线人数的小程序,非常适合初学者进行学习和实践。 在SSH框架中,Spring提供了依赖注入和事务管理,Struts处理用户请求并控制业务流程...
在IT行业中,Hibernate和Servlet是两个非常重要的技术,它们在构建Web应用程序时起着关键作用。Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互,而Servlet则是Java Web开发中的核心...