2012-05-09 9 views
21

मैं डेटाबेस लेनदेन की अवधारणा की सामान्य समझ को समझता हूं। हम एसीआईडी ​​गुण सुनिश्चित करने के लिए लेनदेन के भीतर एक डेटाबेस तक पहुंचते हैं।डेटाबेस सत्र क्या है?

हाइबरनेट में एक सत्र कहा जाता है। सत्र का उपयोग क्या है? डेटाबेस सत्र को उसी सत्र के बजाय दो सत्रों में कब होना चाहिए?

अधिक व्याख्या करने के लिए, मैं हाइबरनेट कोड कि

  • एक सत्र कारखाने
  • से एक सत्र प्राप्त हुआ एक सत्र
  • एक सौदे
  • लेनदेन
  • बंद कर देता है करता है शुरू होता है खोलता है देखा है सत्र

मुझे क्या चाहिए पता है कि यहां एक सत्र का महत्व क्या है? लेनदेन कारखाने की तरह कुछ क्यों नहीं है, लेनदेन शुरू करें और लेनदेन करें?

+1

"उसी सत्र के बजाय दो सत्रों में डेटाबेस पहुंच कब होनी चाहिए?" https://developer.atlassian.com/display/CONFDEV/Hibernate+ सत्र +and+ ट्रांज़ेक्शन + प्रबंधन + दिशानिर्देश –

+0

एफवाईआई - एक विकिपीडिया पृष्ठ है: http://en.wikipedia.org/wiki/Session_(computer_science) –

उत्तर

18

सत्र केवल एक लेनदेन से अधिक है, यह UnitOfWork पैटर्न का कार्यान्वयन है। दूसरे शब्दों में यह भरी हुई वस्तुओं के लिए पर रखती है, जानता है जो वस्तुओं कायम किया जाना है आदि:

एक कार्य की इकाई एक व्यापार लेनदेन है कि डेटाबेस को प्रभावित कर सकते दौरान जो कुछ भी करते का ट्रैक रखता है। जब आप पूरा कर लेंगे, तो यह आपके काम के परिणामस्वरूप डेटाबेस को बदलने के लिए किए जाने वाले सभी चीजों को दर्शाता है।

सत्र और लेनदेन के बीच संबंध को बेहतर ढंग से समझने के लिए आप this article पर एक नज़र डाल सकते हैं।

एक एकल हाइबरनेट सत्र में एक डेटाबेस लेनदेन के समान स्कोप हो सकता है।

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

एक और प्रोग्रामिंग मॉडल लंबे वार्तालापों का है, उदा। एक एप्लिकेशन जो एक बहु-चरण संवाद लागू करता है, उदाहरण के लिए एक विज़ार्ड संवाद, उपयोगकर्ता के साथ कई अनुरोध/प्रतिक्रिया चक्रों में बातचीत करने के लिए। इसे लागू करने का एक तरीका सत्र-प्रति-अनुरोध-पृथक-ऑब्जेक्ट पैटर्न है। एक बार लगातार वस्तुओं को उपयोगकर्ता सोच-समय के दौरान अलग माना जाता है और उन्हें संशोधित किए जाने के बाद एक नए सत्र में दोबारा जोड़ा जाना चाहिए।

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

5

@Dmitry ने बहुत अच्छी तरह उत्तर दिया है।

सत्र देखने के लिए एक और तरीका डेटाबेस उपयोग का उदाहरण है। जब आप कोई सत्र बनाते हैं, तो आपके पास समर्थन सेवाओं (जैसे लेनदेन, कैशिंग, कनेक्शन इत्यादि) के साथ किसी भी डेटाबेस इंटरैक्शन के लिए एक संदर्भ तैयार होता है। एक लेनदेन सत्र के भीतर उपयोग की जाने वाली एक स्वतंत्र सेवा है।

यह भी सत्र हाइबरनेट जैसे ठेठ या मैपिंग टूल द्वारा उपयोग किया जाने वाला पहला स्तर कैश है। सत्र डीबी इंटरैक्शन की सुविधा के अनुरोध पर बनाए गए अस्थायी संदर्भ के रूप में कार्य करता है।