ऐसा लगता है कि आपने हाइबरनेट को आशावादी समवर्ती नियंत्रण . इसका मतलब है कि आपकी उपयोगकर्ता तालिका में एक संस्करण फ़ील्ड है जो प्रत्येक पंक्ति अद्यतन पर हाइबरनेट वृद्धि करता है।
सबसे अधिक संभावना है कि आपका लेन-देन HTTP अनुरोध की शुरुआत में शुरू होता है और HTTP प्रतिक्रिया के अंत में समाप्त होता है। इसका अर्थ यह है कि उपयोगकर्ता को संपादित करने की प्रक्रिया में दो लेन-देन होते हैं:एक लेन-देन वेब फ़ॉर्म को पॉप्युलेट करने के लिए और एक लेन-देन परिवर्तनों को सहेजने के लिए।
उस स्थिति में, डेटाबेस के आइसोलेशन स्तर को बदलने से कोई फायदा नहीं होगा। सबसे अधिक संभावना है कि आपको केवल खराब प्रदर्शन और मापनीयता .
StaleObjectException
का होना कोई बुरी बात नहीं है एस। यह वास्तविक दुनिया को दर्शाता है - लोग वास्तव में एक ही चीज़ पर एक बार काम करते हैं और संघर्ष हो सकता है। सवाल यह है कि, जब एक विरोध का पता चला है, तो आप इसे अंतिम उपयोगकर्ताओं के लिए संतोषजनक तरीके से कैसे हल करते हैं? क्या इसे उपयोगकर्ता की सहायता के बिना हल किया जा सकता है?
संभावित रणनीतियाँ हो सकती हैं
-
पिछले उपयोगकर्ता के परिवर्तनों को अधिलेखित कर दें (अक्सर वह नहीं जो आप चाहते हैं - इसलिए समवर्ती नियंत्रण की आवश्यकता),
-
एक त्रुटि संदेश दिखाएं जो उपयोगकर्ता को रीफ्रेश करने और अपने परिवर्तनों को फिर से करने के लिए कह रहा है,
-
पिछले उपयोगकर्ता के परिवर्तनों (कभी-कभी संभव) को अधिलेखित किए बिना परिवर्तनों को स्वचालित रूप से मर्ज करें
-
उपयोगकर्ता को उसके डेटा की गति के बारे में सूचित करें और उसे अपने परिवर्तनों को मैन्युअल रूप से मर्ज करने का एक तरीका प्रदान करें
यह सब संदर्भ पर निर्भर करता है।