प्रति एप्लिकेशन केवल एक सत्र फैक्टरी ऑब्जेक्ट का उपयोग क्यों करें? प्रति आवेदन एकल सत्र फैक्ट्री ऑब्जेक्ट का उपयोग करने के क्या फायदे हैं?प्रति एप्लिकेशन केवल एक सत्र फैक्ट्री ऑब्जेक्ट का उपयोग क्यों करें?
उत्तर
सत्र कारखाने की वस्तुओं को सिंगलटन डिज़ाइन पैटर्न का उपयोग करके कार्यान्वित किया जाना है। सत्र फैक्ट्री के उदाहरण थ्रेड-सुरक्षित हैं और आमतौर पर एक एप्लिकेशन में साझा किए जाते हैं। चूंकि ये वस्तुएं भारी वजन होती हैं क्योंकि उनमें कनेक्शन जानकारी होती है, कॉन्फ़िगरेशन जानकारी और मानचित्रण फ़ाइलों को हाइबरनेट करें, स्थान पथ। तो उदाहरणों की संख्या बनाने से हमारे आवेदन भारी वजन बन जाएगा। लेकिन सत्र वस्तुएं थ्रेड सुरक्षित नहीं हैं। तो संक्षेप में यह है - सत्र फैक्ट्री ऑब्जेक्ट्स प्रति एप्लिकेशन एक हैं और सत्र ऑब्जेक्ट प्रति क्लाइंट हैं।
इसलिए यह डेटा स्रोत प्रति सत्र फ़ैक्टरी होगा। आपके एप्लिकेशन में एक से अधिक डेटासोर्स हो सकते हैं ताकि आपके पास उस उदाहरण में एक से अधिक सत्र फ़ैक्टरी हो। लेकिन आप एक आवेदन में एक से अधिक सत्र सत्र बनाना नहीं चाहते हैं।
लाभ: जाहिर है अपने अपने आवेदन के सुधार के प्रदर्शन :)
अद्यतन - निकालें Hibernate Doc
से एक SessionFactory की आंतरिक स्थिति अपरिवर्तनीय है। एक बार यह बनाया गया है यह आंतरिक स्थिति सेट है। इस आंतरिक स्थिति में ऑब्जेक्ट/रिलेशनल मैपिंग के बारे में मेटाडेटा के सभी शामिल हैं।
कोई भी गलत नहीं है DarkHorse सत्र फ़ैक्टरी को सिंगलटन डिज़ाइन पैटर्न का उपयोग करके लागू नहीं किया गया है। –
@ डार्कहोर्स सत्र फैक्टरी सिंगलटन नहीं है, इसे सिंगलटन के रूप में उपयोग किया जाता है, यह अपरिवर्तनीय है http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/SessionFactory.html – anshulkatta
क्योंकि एक SessionFactory
के निर्माण के एक बेहद महंगी प्रक्रिया है जो हाइबरनेट विन्यास/मानचित्रण गुण पार्स करने और एक डेटाबेस कनेक्शन पूल .Creating कनेक्शन पूल डेटाबेस बनाना शामिल है डेटाबेस कनेक्शन (यानी Connection वस्तुओं बनाने), जो भूमि के ऊपर की वजह से है स्थापित करने की आवश्यकता है डीबी सर्वर का पता लगाने के लिए लिया गया समय, एक संचार चैनल स्थापित करें और प्रमाणीकरण करने के लिए जानकारी का आदान-प्रदान करें।
तो यदि आप प्रत्येक अनुरोध के लिए SessionFactory
बनाते हैं, तो इसका तात्पर्य है कि आप अपने अनुरोध को पूरा करने के लिए डेटाबेस कनेक्शन पूल का उपयोग नहीं कर रहे हैं। आपको खोले जाने के बजाय प्रत्येक अनुरोध के लिए उपरोक्त ओवरहेड प्रक्रिया द्वारा एक नया कनेक्शन सेट करना होगा डेटाबेस कनेक्शन पूल से कनेक्शन।
कुछ प्रमुख आवेदन प्रति एक SessionFactory वस्तु के बारे में अंक के होते हैं: -
1.Single डाटा स्टोर: - यह अपने पूरे आवेदन के लिए एकल डेटा की दुकान है। यद्यपि आपके पास एकाधिक सत्र फैक्ट्री हो सकती है लेकिन प्रत्येक सत्र फ़ैक्टरी के साथ एक अलग डेटाबेस होगा।
2. थ्रेड सुरक्षित: - सत्र फैक्ट्री थ्रेड सुरक्षित है इसलिए इस सुविधा के कारण कई धागे सत्र फैक्ट्री तक पहुंच सकते हैं।
3. अतुलनीय: - सत्र फैक्ट्री की वस्तु बनने के बाद आप सत्र Facotyr के मूल्यों को बदल या सेट नहीं कर सकते हैं। इसकी आंतरिक स्थिति सृजन के समय निर्धारित है।
4. सिंगलेटन: - सत्र स्टार्टअप एप्लिकेशन स्टार्टअप के समय बनाया गया है और यह सिंगलटन डिज़ाइन पैटर्न का पालन करता है।
मुझे आशा है कि यह आपके प्रश्न का उत्तर देगा ..http://techpost360.blogspot.in/2015/07/what-is-hibernate-sessionfactory.html
हां, इसका बहुत सरल समझना महत्वपूर्ण है कि sessionFactory सिंगलटन डिजाइन पैटर्न का पालन करें:
कैसे sessionfactory बनाने के लिए कृपया URL देखें है अधिक जानकारी के लिए। तो आप छेद आवेदन में केवल एक वस्तु बना सकते हैं। सत्र फैक्ट्री भी थ्रेड सुरक्षित है, इसलिए केवल एक थ्रेड अपने कोड के समय निष्पादित कर सकता है। SessionFactory का उदाहरण हेवीवेटेड है क्योंकि इसमें कनेक्शन, हाइबरनेट कॉन्फ़िगरेशन, मैपिंग फाइलें, स्थान पथ शामिल है, इसलिए यदि आप sessionFactory के उदाहरण की संख्या बनाते हैं तो आपका कोड बहुत भारी हो जाता है। इसी कारण से हम एक आवेदन के लिए केवल एक सत्र फैक्टरी उदाहरण का उपयोग कर रहे हैं। हमारे आवेदन के प्रदर्शन में सुधार करने के लिए हम एक आवेदन में सत्र फैक्टरी का केवल एक उदाहरण उपयोग कर रहे हैं।
- 1. प्रति सत्र एक सत्र का प्रबंधन कैसे करें?
- 2. Magento प्रति सत्र 2 कुकीज़ का उपयोग क्यों करता है?
- 3. राज्यव्यापी सत्र बीन्स का उपयोग क्यों करें?
- 4. PHP/सत्र: प्रति उपयोगकर्ता एक लॉगिन करें?
- 5. वसंत: क्यों Hionernate 4 में सत्र फैक्ट्री का उपयोग कक्षा सत्र विधि प्रदान नहीं करता है?
- 6. सुनिश्चित करें कि केवल फैक्ट्री द्वारा निर्मित ऑब्जेक्ट (सी #)
- 7. प्रति सत्र
- 8. सुनिश्चित करें कि एनएचबीर्नेट सत्र फ़ैक्टरी केवल
- 9. प्रति ऐप केवल एक इवेंटसोर्स ऑब्जेक्ट होना चाहिए?
- 10. प्रति एएसपी.NET सत्र
- 11. Clojure में क्यों का उपयोग करें: केवल []
- 12. प्रति सत्र सिंगलटन निबंध?
- 13. एक HttpHandler में ASP.NET सत्र राज्य का उपयोग कैसे करें?
- 14. एनएच अनुरोध प्रति सत्र - "सत्र बंद है!"
- 15. फैक्ट्री ऑब्जेक्ट बनाम फ़ैक्टरी फ़ंक्शन
- 16. प्रति फ़ाइल केवल एक वर्ग
- 17. एक स्विंग एप्लिकेशन में हाइबरनेट का उपयोग करके सत्र प्रबंधन
- 18. हॉर्नेटक्यू जेएमएसएक्सप्शन: सत्र फैक्ट्री बनाने में विफल
- 19. "प्रति तालिका केवल एक पहचान कॉलम हो सकता है" - क्यों?
- 20. प्रति अनुरोध हाइबरनेट-सत्र बनाएं
- 21. .NET एप्लिकेशन प्रति मशीन/प्रति-उपयोगकर्ता लाइसेंसिंग
- 22. ऑब्जेक्ट प्रारंभिकता के साथ फैक्ट्री क्लास - स्थिर
- 23. क्यों सत्र ऑब्जेक्ट विनाश विफल रहा
- 24. हाइबरनेट, सत्र फैक्ट्रीऑब्जेक्ट फैक्ट्री और आउटऑफमेमरी एरर: जावा हीप स्पेस
- 25. सत्र ऑब्जेक्ट
- 26. सेवास्टैक NHibernate सत्र प्रति अनुरोध
- 27. WCF: प्रति-कॉल और प्रति सत्र सेवाओं ... जरूरत समझाने कि प्रति कॉल सार्थक
- 28. एप्लिकेशन का केवल एक उदाहरण कैसे चलाएं
- 29. प्रति ऑब्जेक्ट एकाधिक प्रतिनिधि?
- 30. जेएक्सबी 2 के ऑब्जेक्ट फैक्ट्री कक्षाओं का क्या मतलब है?
अधिक जानकारी के लिए यहां देखें http://stackoverflow.com/a/4544053/366964 –