2010-12-04 15 views
13

अगर मैं कोड है कि ऐसा दिखाई देता है:हाइबरनेट और लेन-देन और मेज पर ताला लगा

beginTransaction(); 
// lots of stuff happens, can take anywhere from a minute to several minutes. 
// it will read from several tables via calling getter methods on lazy relationships. 
commitTransaction(); 
के बीच

में शुरू करते हैं और प्रतिबद्ध, टेबल कि बंद होने से पढ़ा जा रहा है और बाद में कर रहे हैं होगा में इस कारण समस्याओं एक बहु-उपयोगकर्ता वातावरण जहां समस्याएं तब होती हैं जब उपरोक्त एक ही कोड दूसरे उपयोगकर्ता द्वारा बुलाया जाता है?

यदि उपर्युक्त समस्याग्रस्त है, तो क्या हमें हमेशा कोशिश करना चाहिए और लेनदेन को कम रखना चाहिए? और इसे सुविधाजनक बनाने के लिए, आलसी संबंधों पर गेटर विधियों को बुलाए जाने के बजाय, क्या इसका मतलब है लेनदेन को कम रखना और माता-पिता के बच्चों के लिए मैन्युअल रूप से पाता है?

उत्तर

18

हाइबरनेट आपके द्वारा पढ़ी जाने वाली तालिका को स्पष्ट रूप से लॉक करने के लिए कुछ भी नहीं करने जा रहा है। जवाब वास्तव में इस बात पर निर्भर करता है कि आप किस डेटाबेस का उपयोग कर रहे हैं और आपके अलगाव स्तर क्या सेट हैं। पंक्तियों को पढ़कर एक संपूर्ण तालिका लॉक करना इस शताब्दी में लिखे गए किसी भी पूर्ण विशेषीकृत डेटाबेस में नहीं होना चाहिए। किसी भी मल्टीविजनिंग डेटाबेस के लिए, जब तक आप स्वयं को पंक्ति को स्पष्ट रूप से लॉक नहीं करते हैं, तब तक लॉक होने वाला कुछ भी नहीं होगा।

आपके लेन-देन कार्य की अपनी परमाणु इकाई के लिए जो भी लंबाई होनी चाहिए, वह होना चाहिए। कोई सही या गलत लंबाई नहीं है। अपने आप से पूछें "क्या यहां जो कुछ भी होता है वह एक इकाई के रूप में सफल होता है या विफल रहता है और यदि कोई भी टुकड़ा विफल रहता है तो सभी एक साथ रोलडबैक प्राप्त करते हैं?" यही वह दायरा है जिसके लिए आपने लेनदेन निर्धारित किया है।

याद रखें, आपको आलसी लोडिंग के लिए लेनदेन की आवश्यकता नहीं है! आपको बस एक खुले सत्र की जरूरत है। दोनों जुड़े नहीं हैं। आप अपना लेनदेन कर सकते हैं और आलसी लोडिंग काम करने के लिए अपना सत्र खोल सकते हैं।

4

सबसे अच्छी बात लेनदेन को कम रखना है। लॉकिंग अर्थशास्त्र हालांकि लेनदेन अलगाव स्तर पर निर्भर करता है।

Open Session In View वह पैटर्न है जिसे आप आलसी-fetching/रिश्तों के बारे में बात करते समय देख रहे हैं।

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