Je suis nouveau dans Hibernate, après avoir lu l'api et le tutoriel d'Hibernate, il semble que la session doit être fermée lorsqu'elle n'est pas utilisée.
Comme ça :
Session sess=getSession();
Transcration tx=sess.beginTranscration();
//do something using teh session
sess.save(obj);
tx.commit();
sess.close;
Je n'ai aucun doute quant à son utilisation dans une application autonome. Cependant, je ne suis pas sûr de l'utiliser dans une application web.
Par exemple, j'ai une servlet : TestServlet
pour recevoir les paramètres du client, puis j'appelle un gestionnaire pour demander quelque chose en fonction des paramètres, comme ceci :
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.
}
}
Dois-je fermer la session dans la méthode d'interrogation ?
Depuis que quelqu'un m'a dit que la session dans Hibernate est juste comme la connexion dans JDBC. Donc l'ouvrir et le fermer si fréquemment est la bonne méthode ?
BTW, est-ce que tx.commit() est nécessaire à chaque fois ?
De même, quel est le problème de threads lié à l'utilisation de la session dans la servlet, puisque j'ai vu que la session n'est pas threadée dans l'api.