Должен ли я всегда использовать транзакции в nhibernate (даже для простых чтений и записей)?

Я знаю, что для многостраничной записи я должен использовать транзакции в nhibernate. Однако как насчет простого чтения и записи (1 часть)... Я читал, что хорошей практикой всегда пользоваться транзакциями. Это необходимо?

Должен ли я сделать следующее для простого чтения? или я могу просто отбросить часть транскодирования все togather?

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;
        }
    }  
}

или

public PrinterJob RetrievePrinterJobById(Guid id)
{
    using (ISession session = sessionFactory.OpenSession())
    {
        return (PrinterJob) session.Get(typeof (PrinterJob), id);              
    }
}

А как насчет простой записи?

public void AddPrintJob(PrinterJob printerJob)
{
    using (ISession session = sessionFactory.OpenSession())
    {
        using (ITransaction transaction = session.BeginTransaction())
        {
            session.Save(printerJob);
            transaction.Commit();
        }
    }
}

Ответ 1

Лучшей рекомендацией было бы всегда использовать транзакцию. Эта ссылка из документации NHProf, лучше всего объясняет, почему.

Когда мы не определяем наши собственные транзакций, он возвращается в неявный режим транзакции, где каждый в базу данных работает в собственная сделка, в результате чего (время базы данных строить и срывать транзакции), и уменьшенная согласованность.

Даже если мы читаем только данные, мы должен использовать транзакцию, потому что использование транзакций гарантирует, что мы получим согласованные результаты из базы данных. NHibernate предполагает, что весь доступ к база данных выполняется под транзакции и сильно обескураживает любое использование сеанса без сделка.

(Кстати, если вы делаете серьезную работу NHibernate, подумайте о том, чтобы попробовать NHProf).