ibatis-user-cs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From MaaKut <ma...@pochta.ru>
Subject Re: Caching and thread safety
Date Fri, 30 Jan 2009 06:13:43 GMT

I've got one more question concerning transactions and thead-safety.
Say, I have Thread #1 running code like this:

ISqlMapper sqlMapper = ... // Get a singleton instance of ISqlMapper
sqlMapper.BeginTransaction();
try
{  
  sqlMapper.Update(entity1);
  sqlMapper.Delete(entity2);
  // and something else goes here
  sqlMapper.CommitTransaction();
}
catch
{
   sqlMapper.RollbackTransaction();
   throw;
}

While this one is running try-block, Thread #2 also gets the same ISqlMapper
instance and, e.g., tries to insert an entity. Will this insertion
participate in transaction started by Thread #1 or SqlMapper is smart enough
to distinguish these two?
Also, I might rewrite Thread #1 code like this:

ISqlMapper sqlMapper = ... // Get a singleton instance of ISqlMapper
using (ISqlMapSession session = sqlMapper.BeginTransaction())
{
  sqlMapper.Update(entity1);
  sqlMapper.Delete(entity2);
  // and something else goes here
  session.Complete();
}

In this case I conttol transaction via ISqlMapSession instance which seems
to be created for this particular thread only, but still I can't find part
of the doc which says that yes, code like this is thread-safe.
-- 
View this message in context: http://www.nabble.com/Caching-and-thread-safety-tp21680257p21742034.html
Sent from the iBATIS - User - Cs mailing list archive at Nabble.com.


Mime
View raw message