openSession
: Cuando llamas SessionFactory.openSession
, siempre crea un nuevo Session
objeto y te lo da.
Debe vaciar y cerrar explícitamente estos objetos de sesión.
Como los objetos de sesión no son seguros para subprocesos, debe crear un objeto de sesión por solicitud en un entorno de subprocesos múltiples y también una sesión por solicitud en aplicaciones web.
getCurrentSession
: Cuando llame SessionFactory.getCurrentSession
, le proporcionará un objeto de sesión que se encuentra en contexto de hibernación y administrado por hibernate internamente. Está sujeto al alcance de la transacción.
Cuando llama SessionFactory.getCurrentSession
, crea un nuevo Session
si no existe, de lo contrario use la misma sesión que está en el contexto de hibernación actual. Se descarga y cierra la sesión automáticamente cuando finaliza la transacción, por lo que no es necesario que lo haga externamente.
Si está utilizando hibernación en un entorno de subproceso único, puede usarlo getCurrentSession
, ya que es más rápido en rendimiento en comparación con la creación de una nueva sesión cada vez.
Debe agregar la siguiente propiedad a hibernate.cfg.xml para usar el getCurrentSession
método:
<session-factory>
<!-- Put other elements here -->
<property name="hibernate.current_session_context_class">
thread
</property>
</session-factory>
openSession()
oclose()
. El solo llamagetCurrentSession()
. Supongo que se ponecurrent_session_context
a ellothread
. Ahora creo que entiendogetCurrentSession()
. Sin embargo, no sé cuándo debo usaropenSession()
.