sesión.BeginTransaction() y transacción.Commit()
-
06-07-2019 - |
Pregunta
Soy nuevo en Nhibernate, por lo que mi consulta puede parecerle trivial.
Generalmente incorporamos código de operación de datos dentro
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
...Code for CRUD operations
transaction.Commit();
}
}
Debido a que generalmente iniciamos transacción/confirmamos/retrocedemos para guardar/actualizar/eliminar datos,
Me pregunto si BeginTransaction()
y Commit()
son obligatorios incluso si estoy recuperando datos usandosession.Get<T>(id);
osession.CreateCriteria<T>().List();
Por favor guía.
¡Gracias!
Solución
No, no puede realizar la recuperación de datos sin transacción; todas las operaciones de NH están centradas en las transacciones.
Lea este artículo por Ayende Rahien .
Otros consejos
Siempre debe usar transacciones en consultas. No solo por el rendimiento sino también por razones de concurrencia, y Ayende dice al respecto.
Su generador de perfiles de Hibernate muestra y alerta si usa consultas que no están en el alcance de la transacción.