openSession: Quando você liga SessionFactory.openSession, ele sempre cria um novo Sessionobjeto e o entrega a você.
Você precisa liberar e fechar explicitamente esses objetos de sessão.
Como os objetos de sessão não são seguros para threads, é necessário criar um objeto de sessão por solicitação no ambiente multithread e uma sessão por solicitação também em aplicativos da web.
getCurrentSession: Quando você ligar SessionFactory.getCurrentSession, ele fornecerá o objeto de sessão que está no contexto de hibernação e gerenciado internamente por hibernação. Está vinculado ao escopo da transação.
Quando você liga SessionFactory.getCurrentSession, ele cria um novo Sessionse não existir; caso contrário, use a mesma sessão que está no contexto de hibernação atual. Ele libera e fecha automaticamente a sessão quando a transação termina, para que você não precise fazer isso externamente.
Se você estiver usando o hibernate no ambiente de thread único, poderá usá- getCurrentSessionlo, pois seu desempenho é mais rápido em comparação à criação de uma nova sessão a cada vez.
Você precisa adicionar a seguinte propriedade ao hibernate.cfg.xml para usar o getCurrentSessionmétodo:
<session-factory>
<!-- Put other elements here -->
<property name="hibernate.current_session_context_class">
thread
</property>
</session-factory>
openSession()ouclose(). Ele só ligagetCurrentSession(). Eu acho que ele definecurrent_session_contextparathread. Agora acho que entendogetCurrentSession(). No entanto, não sei quando devo usaropenSession().