यह कुछ समय हो गया है क्योंकि मैंने यह प्रश्न पोस्ट किया है लेकिन मैंने इसे समझ लिया है। मैं समझाऊंगा कि मैंने क्या किया ताकि यह किसी और के लिए सहायक हो।
एनोटेशन @Version
एक javax.persistence इंटरफ़ेस है और वसंत-डेटा आराम जेपीए फ्रेमवर्क जैसा कि मैंने पहले उल्लेख किया था। आप यह स्वचालित रूप से पिक हाइबरनेट एनोटेशन होगा उपयोग कर रहे हैं
@Version
@Column(name = "VERSION")
private long version;
और यह पैदा करेगा:
आप @version का उपयोग करना चाहते हैं तो आप इतना की तरह अपने डोमेन वस्तु में एक संस्करण क्षेत्र बनाने की जरूरत आपके (My caseql) तालिका में एक "संस्करण" पंक्ति। जब भी एक रिकॉर्ड अपडेट हो जाता है, हाइबरनेट काउंटर को बढ़ाएगा 1.
अब यह कुछ क्यों है? वैसे कारण आप इसका उपयोग क्यों कर सकते हैं क्योंकि यह आपके ग्राहकों को stale data के साथ काम करने का मौका कम करता है। जब भी कोई ग्राहक आपके द्वारा सूचना प्राप्त करता है तो वह संस्करण उसके द्वारा अनुरोध किए गए डेटा के साथ प्रदान किया जाता है। जैसे
{ <-- School entity -->
"id": 1,
"version": 0,
"name": "De regenboog",
"street": "Plantaanstraat",
"number": "2",
"zipCode": "1234AS",
"city": "Amsterdam"
}
अब अगर एक ग्राहक इस विशिष्ट रिकॉर्ड के बारे में कुछ जानकारी को बदलना चाहता है यह संस्करण मूल्य के साथ-साथ नई जानकारी भेजता है। इस मामले में चलो स्कूल का नाम बदल दें।
{ <-- School entity -->
"id": 1,
"version": 0,
"name": "Stackoverflow",
"street": "Plantaanstraat",
"number": "2",
"zipCode": "1234AS",
"city": "Amsterdam"
}
हाइबरनेट आपकी जानकारी के साथ एक प्रश्न के साथ आता है और संस्करण को देखने के लिए अतिरिक्त 'कहां' खंड जोड़ता है। update .... where id = 1 and version = 0
। अब यदि पंक्ति अपडेट की गई है तो इसका मतलब है कि आपने सही संस्करण प्रदान किया है और किसी और ने उस जानकारी के बीच उस विशिष्ट जानकारी को बदल दिया है जब आपने जानकारी का अनुरोध किया था, इसे बदल दिया और इसे वापस भेज दिया। अच्छा है ना?
अब क्या होगा यदि पंक्ति अपडेट नहीं की गई है? इसका मतलब है कि किसी और ने उस पंक्ति को अपडेट किया है जब आप जानकारी का अनुरोध करने के बाद त्वरित बाथरूम ब्रेक ले रहे थे। इसका मतलब है कि आपका संस्करण पुराना है! अब क्या होने की ज़रूरत है वास्तव में केस विशिष्ट का उपयोग करें, इसलिए मैं इसके बारे में विवरण में नहीं जाऊंगा :)
आशा है कि कोई इस जानकारी का उपयोग कर सकता है!
धन्यवाद सभी
यह समझ में आता है। यह निश्चित रूप से मेरी मदद करता है। धन्यवाद – kalz