2017-03-29 7 views
1

nHibernate 선물을 트랜잭션으로 래핑 할 필요가 있습니까?nHibernate 선물을 트랜잭션으로 래핑 할 필요가 있습니까?

같은 :

using (var s = sf.OpenSession()) 
using (var tx = s.BeginTransaction()) 
{ 
    var blogs = s.CreateCriteria<Blog>() 
     .SetMaxResults(30) 
     .List<Blog>(); 
    var countOfBlogs = s.CreateCriteria<Blog>() 
     .SetProjection(Projections.Count(Projections.Id())) 
     .UniqueResult<int>(); 

    Console.WriteLine("Number of blogs: {0}", countOfBlogs); 
    foreach (var blog in blogs) 
    { 
     Console.WriteLine(blog.Title); 
    } 

    tx.Commit(); 
} 

여기에서 :

https://ayende.com/blog/3979/nhibernate-futures

나는이 작업을 수행하는 이유를 볼 수 없습니다.

답변

3

NHibernate 질의가 명시 적으로 트랜잭션에 래핑되지 않을 때, 이것은 암묵적 트랜잭션이라고 불려지며, 두 번째 레벨 캐시를 무효화하는 것을 포함하여 여러 가지 의미가 있습니다. 이 모두 여기에 설명 :

https://hibernatingrhinos.com/Products/nhprof/learn#DoNotUseImplicitTransactions

발췌 :

우리는 데이터를 읽는 경우에도 트랜잭션을 사용하는 것은 우리가 데이터베이스에서 일치하는 결과를 얻을 수 있음을 보장하기 때문에, 우리는 트랜잭션을 사용해야합니다 . Hibernate는 데이타베이스에 대한 모든 접근이 트랜잭션 하에서 수행된다고 가정하고, 트랜잭션없이 세션의 사용을 강하게 피한다.