`
newleague
  • 浏览: 1472290 次
  • 性别: 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方法

分享到:
评论

相关推荐

    httpSession

    NULL 博文链接:https://eggbucket.iteye.com/blog/1350360

    Hibernate体系结构的概要图

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

    自己实现的spring-session

    自己实现httpSession,在getSession中获取cookie,从cookie中读取sessionId, 如果没有sessionId就新创建session,如果有sessionId,就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建...

    详解SpringBoot中Session超时原理说明

    本篇文章主要介绍了详解SpringBoot中Session超时原理说明,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    httpsession实现验证码登录小实例

    应用httpsession实现一个简单的验证码登录小实例,其中验证码生成工具代码可以积累使用

    Session-JavaWeb专题

    本课程系统地讲解了SESSION这个知识点,主要讲解了Session的概念,它是如何产生,如何工作,如何存放和如何消亡的,以及Session在JavaWeb中的体现和操作,在最后用一个小例子来演示了如何通过Servlet来操作Session。...

    HttpSession/session,jsp,servlet——综合练习题一

    详细题目描述可参照博客内文章。。。。。。。。。。。。。。。。。。。。。

    java后台请求http并保持Session

    java后台请求http,区分get和post,一般是用来抓取带有登陆权限网站的数据,后台先登录,保持session,再请求数据URL

    WebSocket区分不同客户端两种方法(HttpSession和@PathParam)

    WebSocket区分不同客户端两种方法(HttpSession和@PathParam)

    struts中自定义的tag的Java类中如何获得session

    HttpSession session = this.pageContext.getSession(); 资源的方法同上。故不用下载资源。

    spring websocket获取httpsession

    spring4+ websocket获取httpsession

    session在httphandler失效

    session在httphandler失效

    HttpSession的使用

    有助于学习,有助于学习JDBC技术,帮助我们在学习中理解接口和类等,以及多个接口的 作用

    在html页面中取得session中的值的方法

    1.首先呢session的key-value都是存在server的,浏览器HTML页面是没有办法直接取得session中的值,只有在html里能通过js拿到jesessionid之类的东西。 1.1、数据量如果小,可以考虑放到cookie里,传到客户端,html里用...

    ServletHttpSession DEMO

    ServletHttpSession DEMO

    session机制详解

    一、术语session 二、HTTP协议与状态保持 三、理解cookie机制 四、理解session机制 五、理解javax.servlet.http.HttpSession 六、HttpSession常见问题 七、跨应用程序的session共享 八、总结

    EOS运算逻辑中获取session和request

    在普元Primeton EOS运算逻辑中获取HttpSession和Httprequest以及application 在普元Primeton EOS运算逻辑中获取HttpSession和Httprequest以及application

    struts2 session 解读

    例: public String findAll(){ HttpSession session = ServletActionContext.getRequest().getSession(); list = userService.find(); session.setAttribute(“list”, list); return this.SUCCESS;

    session_demo.zip

    会话 session 和 cookie(8)_HttpSession 概述

    在JSP中使用Session制作简单的登录模块

    charset=GB2312" %> <br><html><br><head><br><title>CH5 - Login.jsp</title><br></head><br><body><br> <h2>javax.servlet.http.HttpSession - session 对象</h2> <form action=Login.jsp method="POST...

Global site tag (gtag.js) - Google Analytics