想要天天向上,就要懂得享受学习。图老师为大家推荐Hibernate中的Session什么时候关闭?,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!
【 tulaoshi.com - 编程语言 】
hibernate是持久化对象的,那它里面的Session什么关闭?
问题补充:感觉你说的不怎么对
session似乎只在跟用户交互的时候才进行创建
等用户用完session以后,它就会随着用户销毁
  以上是我对楼主补充问题的回答,顺带给楼下的初学者一点知识的补充。 
  *************************************** 
  楼主只怕是初学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); 
最好能加上异常捕捉,之类,如产生异常,即时回滚。保证操作不出意外。
  try{ 
  ... 
  tx.commit(); 
  }catch(Exception e){ 
  tx.rollback(); 
  }finally{ 
  HibernateSessionFactory.closeSession(session); 
  }
默认session的时间为20分钟,假如想在这之前清除的话可以使用Session.Abandorn方法
来源:http://www.tulaoshi.com/n/20160219/1621099.html
看过《Hibernate中的Session什么时候关闭?》的人还看了以下文章 更多>>