我是Hibernate的新手,在阅读了Hibernate API和教程之后,似乎在不使用会话时应该关闭会话。
类似于这样:
Session sess=getSession();
Transcration tx=sess.beginTranscration();
//do something using teh session
sess.save(obj);
tx.commit();
sess.close;
在独立应用程序中使用时我没有问题。 但是在Web应用程序中使用时我不确定。
例如,我有一个servlet:TestServlet
用于接收来自客户端的参数,然后我调用一个Manager根据这些参数查询一些内容,就像这样:
class TestServlet{
doGet(HttpServletRequset,httpServletResponse){
String para1=request.getParam...();
String para2=.....
new Manager().query(para1,para2);
}
}
class Manager{
public String query(String pa1,String pa2){
Session=....// get the session
//do query using para1 and 1
session.close() //Here, I wonder if I should close it.
}
}
我应该在查询方法中关闭session吗?
因为有人告诉我,Hibernate中的session就像JDBC中的connection一样。所以频繁地打开和关闭它是正确的方式吗?
顺便问一下,每次都需要tx.commit()吗?
还有,在Servlet中使用session时,会出现什么线程问题,因为我看到API中session不是线程安全的。