Управление сеансом гибернации (когда его закрывать вручную)

Я новичок в спящем режиме, после прочтения api спящего режима и руководства, кажется, что сеанс должен закрываться, когда он не используется.

Вот так:

Session sess=getSession();
Transcration tx=sess.beginTranscration();
//do something using teh session
sess.save(obj);
tx.commit();
sess.close;

I не возникает вопросов при использовании в автономном приложении. Однако я не уверен при использовании в веб-приложении.

Например, у меня есть сервлет: 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.
  }
}

Должен ли я закрыть сеанс в методе запроса?

Поскольку кто-то сказал мне, что сеанс в спящем режиме аналогичен соединению в jdbc. Так что открывать и закрывать его так часто - это правильный путь?

Кстати, требуется ли tx.commit () каждый раз?

Также в чем проблема потока при использовании сеанса в сервлете, поскольку я видел, что сеанс не потокобезопасность в api.

64
задан coding_idiot 8 November 2013 в 11:17
поделиться