Я новичок в hibernate, после прочтения api и учебника hibernate кажется, что сессия должна закрываться, когда она не используется.
Как это:
Session sess=getSession();
Transcration tx=sess.beginTranscration();
//do something using teh session
sess.save(obj);
tx.commit();
sess.close;
У меня нет вопросов при использовании его в автономном приложении.
Однако я не уверен при использовании в веб-приложении.
Например, у меня есть сервлет: TestServlet
для получения параметров от клиента, затем я вызываю менеджера для запроса чего-либо в соответствии с параметрами, например:
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.
}
}
Должен ли я закрыть сеанс в методе запроса?
Так как кто-то сказал мне, что сессия в hibernate такая же, как соединение в jdbc. Так что открывать и закрывать его так часто - правильный путь?
Кстати, требуется ли tx.commit () каждый раз?
Кроме того, в чем проблема с использованием сеанса в сервлете, поскольку я видел, что сеанс не является потокобезопасным в API.