inutan
inutan

Reputation: 10888

session.BeginTransaction() and transaction.Commit()

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

Answers (2)

Sly
Sly

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

o.k.w
o.k.w

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

Related Questions