ASP.NET NHibernate transaction duration -
ASP.NET NHibernate transaction duration -
currently in our asp.net app have 1 session per request, , create 1 transaction every time load or update , object. see below:
public static t findbyid<t>(object id) { isession session = nhibernatehelper.getcurrentsession(); itransaction tx = session.begintransaction(); seek { obj = session.get<t>(id); tx.commit(); } grab { session.close(); throw; } { tx.dispose(); } homecoming obj; } public virtual void save() { isession session = nhibernatehelper.getcurrentsession(); itransaction transaction = session.begintransaction(); seek { if (!ispersisted) { session.save(this); } else { session.saveorupdatecopy(this); } transaction.commit(); } grab (hibernateexception) { if (transaction != null) { transaction.rollback(); } if (session.isopen) { session.close(); } throw; } { transaction.dispose(); } } obviously isn't ideal means create new connection database every time load or save object, incurs performance overhead.
questions:
if entity loaded in 1st level cache gettransaction() phone call open database connection? suspect will... is there improve way handle our transaction management there less transactions , hence less database connections?unfortunately app code mature construction (with , update in same transaction):
using(var session = sessionfactory.opensession()) using(var tx = session.begintransaction()) { var post = session.get<post>(1); // post tx.commit(); } would terrible thought create 1 transaction per request , commit @ end of request? guess downside ties 1 database connection while non-database operations take place.
one transaction per request concidered best practice nhibernate. pattern implemented in sharp architecture.
but in nhibernate method begintransaction() doest open connection db. connection opened @ first real sql request , closed after query executed. nhibernate holds open connection seconds perform query. can verify sql profiler.
additionally nhiberante seek utilize sql servers connection pool , why opening connection may not expensive.
asp.net nhibernate
Comments
Post a Comment