यह एक डिज़ाइन प्रश्न है, कंक्रीट कोड मेरे नीचे की रक्षा के लिए सबमिट नहीं किया गया है।org.hibernate.Session.clear() हानिकारक माना जाता है?
- खुला सत्र
- प्रारंभ लेन-देन
- व्यापार (पढ़ सकते हैं और डेटा को संशोधित)
- लेन-देन
- बंद सत्र कमिट कार्य करें:
जब हाइबरनेट के साथ काम कर के रूप में इस मानक कार्यप्रवाह है
संभवतः संभवतः 2-4 के माध्यम से पुनरावृत्तियों।
सत्र.क्लियर() के लिए उचित उपयोग के मामले क्या हैं?
ए: मेरे पास ठोस समस्या है जो कोड का एक (बड़ा) टुकड़ा है जो इकाइयों को लोड और संशोधित करता है, फिर सत्र को स्पष्ट करता है, अनिवार्य रूप से किए गए परिवर्तनों को फेंक देता है। (पूरा करने के लिए व्यवसाय कार्य में इकाइयों को संशोधित करना शामिल नहीं है, इसलिए कोड "काम करता है")।
मुझे लगता है कि सही डिजाइन यह सुनिश्चित करना होगा कि कोड का (बड़ा) टुकड़ा परिवर्तन नहीं करता है जो इसे सहेजना नहीं चाहता है?
बी: मुझे लगता है कि सत्र। स्क्वायर() सुविधा/लचीलापन के लिए मौजूद है, न कि क्योंकि इसका उपयोग करना एक अच्छा विचार है।
क्या मैंने हाइबरनेट दर्शन को गलत समझा है?
सी: सबक्वेस्टियन: क्या कार्य पूर्ण होने के लिए फ्रेमवर्क कोड के लिए यह एक बुरा विचार है() सत्र पूरा होने पर सत्र? आईएमएचओ, जब कार्य पूरा हो जाता है तो सत्र गंदा हो जाता है, तो ढांचे को शिकायत करनी चाहिए! सत्र बंद होना चाहिए, क्योंकि कार्य पूरा हो रहा है ... (मिनट के लिए प्रदर्शन को रद्द करना)
(लेबल ए, बी और सी ताकि आप इंगित कर सकें कि आप किस भाग का जवाब दे रहे हैं)।
विज्ञापन ए): एक लेनदेन में बड़े डेटासेट को प्रोसेस करना मेरे लिए खराब डिज़ाइन जैसा लगता है (दिया गया है, मैंने शायद सभी संभावित समस्याओं का विचार नहीं किया हो सकता है ...)। एक इकाई को "स्पष्ट रूप से" बनाए रखने का क्या मतलब है? session.save (संस्था)? विज्ञापन सी): लगता है जैसे हम मानते हैं कि ढांचे को ऐसा नहीं करना चाहिए - ढांचा संभवतः यह सुनिश्चित नहीं कर सकता कि ग्राहक क्या करते हैं। :-) –
@ मॉर्टन लॉरिट्सनहोडाबोकस: जाहिर है, एक हाइबरनेट लेनदेन में हजारों रिकॉर्ड लोड और संशोधित करना एक संकेत है कि एक अलग उपकरण का उपयोग किया जाना चाहिए। हां, * स्पष्ट रूप से * मेरा मतलब है कि 'बचाओ()' को कॉल करना है क्योंकि हाइबरनेट को गंदे इकाइयों को खोजने के लिए। –
@MortenLauritsen Khodabocus कृपया मुझे प्रबुद्ध करें। एक लेनदेन में एक बड़े पढ़ने-योग्य डेटा सेट को संसाधित करना क्यों बुरा विचार होगा? ऐसा लगता है कि अगर यह डीबी पक्ष पर आदेश देने में शामिल था, तो यह स्मार्ट होगा क्योंकि यह कई बार पुन: व्यवस्थित करने की आवश्यकता से बचाएगा। लेनदेन का उपयोग नहीं करना मतलब है कि डीबी आपके आदेशित राज्य को विभिन्न प्रश्नों में याद रखेगा जो एक ही लेनदेन का हिस्सा हैं? साथ ही, 'एक लेनदेन का उपयोग' नहीं है, वास्तव में हाइबरनेट की स्क्रॉल करने योग्य रीसेट एपीआई क्या करता है? – KyleM