Reputation: 10888
I am new to Nhibernate, so my query may seem trivial to you.
We generally embed data operation code inside
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
...Code for CRUD operations
transaction.Commit();
}
}
Because we generally BeginTransaction/Commit/Rollback for saving/updating/deleting data,
I wonder if BeginTransaction()
and Commit()
are required even if I am retriving data using
session.Get<T>(id);
or
session.CreateCriteria<T>().List();
Please guide.
Thank you!
Upvotes: 10
Views: 9931
Reputation: 15217
You should always use transactions in queries. Not only for the performance but also for concurrency reasons, and Ayende says about it.
His Hibernate profiler shows and alert if you use queries not in transaction scope.
Upvotes: 3
Reputation: 25790
No, you can't do data retrieval without transaction; all NH operations are transaction-centric.
Read this article by Ayende Rahien.
Upvotes: 6