Hibernate中的Session什么时候关闭?

2016-02-19 19:28 28 1 收藏

想要天天向上,就要懂得享受学习。图老师为大家推荐Hibernate中的Session什么时候关闭?,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

【 tulaoshi.com - 编程语言 】

  hibernate是持久化对象的,那它里面的Session什么关闭?

  问题补充:感觉你说的不怎么对

  session似乎只在跟用户交互的时候才进行创建

  等用户用完session以后,它就会随着用户销毁

  以上是我对楼主补充问题的回答,顺带给楼下的初学者一点知识的补充。
  ***************************************

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  楼主只怕是初学Java,还没有搞清除HttpSession和Hibernate里的Session的区别。因为楼主说的东西是HttpSession的内容。
  他们是完全不同的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唯一的相似处就是名字有点像,其他没任何一样的地方。
  至于它的用法,相信我在下面已经说得很明白了。
  不懂的加我QQ:178036872

  ***************************************

  一般的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);

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

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

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


来源:http://www.tulaoshi.com/n/20160219/1621099.html

延伸阅读
标签: 育儿
什么时候生育最佳 我国对于晚婚晚育规定中指出,女性在23周岁以上结婚,属于晚婚;已婚妇女24周岁以上或晚婚后怀孕生育第一个孩子为晚育。不过,目前依旧存在部分地区有女性过早生育的情况。过早生育孩子对孕妇来说存在一定高危因素。一般来说,小于20岁怀孕属于高危妊娠,对今后的身体健康影响非常大,有些甚至会造成终生不育。年龄小,...
Equals 方法只是在 System.Object 中定义的一个虚拟方法,它由任何选择执行该任务的类所重写。== 运算符是一个可由类重载的运算符,该类通常具有恒等行为。 对于未重载 == 的引用类型,该运算符会比较两个引用类型是否引用同一对象,而这恰好是 System.Object 中的 Equals 实现所做的工作。 对于未重载 == 的值类型,该运算符会比较这两个值是...
标签: 生活常识
饭后服用钙片吸收好 补钙的最佳时间建议是在吃饭的时候或者是饭后45分钟,因为这时候胃酸的活动能力是最大的,这段时间的钙片中的钙质是最容易被吸收的。 晚上补钙效果好 晚上补钙的话效果是很好的,因为到了晚上身体一般处于放松的状态,到了晚上是吸收最强的,所以晚饭后吃钙片是很好的。当然晚饭也不能很晚,七八点钟为宜。 春...
标签: 孕妇
胎动什么时候开始 胎动频繁是什么时候 胎动什么时候开始想必这是很多妈妈们都想知道的问题吧,很多新妈妈对此都是很在意的哦,那么大家知道胎动什么时候开始呢,胎动是什么感觉呢,胎动频繁正常吗,下面就让我们一起来了解一下吧。 一天,胎儿有2个活动高峰,频繁运动。一个是在早上七点九点,一个是晚上一点,11个小...
标签: 买房
一、观察银行货币政策变化 银行货币政策变化是楼市的一个重要参考因素。纵观以往历史经验,银行信贷政策宽松时,将会带动楼市成交量和房价的上涨,比如2008年5次降息后的暴涨;而房贷政策收紧,则是楼市转冷的迹象,比如2013年下半年。 2016年,央行连续多次降息、降准,利率一降再降,市场流动性的增加,房企资金面的逐渐宽裕...

经验教程

228

收藏

27
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部