2010-07-21 5 views
14

मुझे पता है कि बहु भाग लिखने के लिए, मुझे निबर्ननेट में लेनदेन का उपयोग करना चाहिए। हालांकि सरल पढ़ने और लिखने के बारे में क्या (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(); 
     } 
    } 
} 
+7

SO पर शानदार उत्तर: http://stackoverflow.com/questions/1657465/nhibernate-transactions-on-reads –

उत्तर

21

सर्वोत्तम अनुशंसा हमेशा लेनदेन का उपयोग करना होगा। This link from the NHProf दस्तावेज़ीकरण, सबसे अच्छा बताता है क्यों।

जब हम अपने ही लेनदेन को परिभाषित नहीं है, यह अंतर्निहित लेनदेन मोड, जहां डेटाबेस के लिए हर बयान इसके खुद लेन-देन में चलता है, एक बड़ी प्रदर्शन लागत में जिसके परिणामस्वरूप में वापस (डेटाबेस समय गिर जाता है लेनदेन का निर्माण और फाड़ें), और कम स्थिरता।

यहां तक ​​कि अगर हम केवल डेटा पढ़ रहे हैं, हम लेन-देन, क्योंकि लेनदेन का उपयोग कर यह सुनिश्चित करता है कि हम मिल डेटाबेस से संगत परिणामों का उपयोग करना चाहिए। NHibernate मानता है कि पर सभी डेटाबेस लेनदेन के तहत किया जाता है, और लेनदेन के बिना सत्र के किसी भी उपयोग को दृढ़ता से हतोत्साहित करता है।

(बीटीडब्ल्यू, यदि आप गंभीर एनएचबेर्नेट काम कर रहे हैं, तो एनएचप्रोफ को आजमाने का विचार करें)।

संबंधित मुद्दे

 संबंधित मुद्दे