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

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

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

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();
        }
    }
}
14
задан Joel 22 August 2013 в 14:30
поделиться

1 ответ

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

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

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

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

21
ответ дан 1 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: