title: Should I always use transactions in nhibernate (even for simple reads and writes)?
body: <p>I know that for multi part writes, I should be using transactions in nhibernate. However what about for simple read and writes (1 part) ... I've read that it's good practice to always use transactions. Is this required?     </p>
  
  <p>Should I do the following for a simple read ?? or can I just drop the transcaction part all togather ? </p>
  
  <pre><code>public PrinterJob RetrievePrinterJobById(Guid id)
  {
      using (ISession session = sessionFactory.OpenSession())
      {
          using (ITransaction transaction = session.BeginTransaction())
          {
              var printerJob2 = (PrinterJob) session.Get(typeof (PrinterJob), id);
              transaction.Commit();
  
              return printerJob2;
          }
      }  
  }
  </code></pre>
  
  <p>or</p>
  
  <pre><code>public PrinterJob RetrievePrinterJobById(Guid id)
  {
      using (ISession session = sessionFactory.OpenSession())
      {
          return (PrinterJob) session.Get(typeof (PrinterJob), id);              
      }
  }
  </code></pre>
  
  <p>What about for simple writes?</p>
  
  <pre><code>public void AddPrintJob(PrinterJob printerJob)
  {
      using (ISession session = sessionFactory.OpenSession())
      {
          using (ITransaction transaction = session.BeginTransaction())
          {
              session.Save(printerJob);
              transaction.Commit();
          }
      }
  }
  </code></pre>