यदि मेरे पास स्थैतिक विधियों वाला उपयोग वर्ग है जो मूल डेटा पहुंच को पूरा करने के लिए हाइबरनेट फ़ंक्शन को कॉल करेगा। मैं सोच रहा हूं कि विधि बनाने के लिए synchronized
थ्रेड-सुरक्षा सुनिश्चित करने का सही दृष्टिकोण है।सिंक्रनाइज़ किए गए स्थिर तरीके जावा में कैसे काम करते हैं?
मैं चाहता हूं कि यह उसी डीबी इंस्टेंस में जानकारी तक पहुंच को रोक सके। हालांकि, अब मुझे यकीन है कि यदि निम्न कोड getObjectById
को सभी वर्गों के लिए बुलाया जा रहा है, तो इसे किसी विशेष वर्ग द्वारा बुलाया जा रहा है।
public class Utils {
public static synchronized Object getObjectById (Class objclass, Long id) {
// call hibernate class
Session session = new Configuration().configure().buildSessionFactory().openSession();
Object obj = session.load(objclass, id);
session.close();
return obj;
}
// other static methods
}
बहुत उपयोगी जवाब! धन्यवाद! तो हाइबरनेट "आशावादी लॉकिंग" द्वारा cnocurrency का ख्याल रखता है। फिर किसी भी डेटा-पहुंच समेकन को हल करने के लिए "सिंक्रनाइज़" विधियों का उपयोग करने की आवश्यकता नहीं है ?? डेटाबेस में डेटा संग्रहीत नहीं होने पर केवल "सिंक्रनाइज़" विधियों का उपयोग करें ?? ..क्या आप उनका इस्तेमाल करते हैं ?? – tomato
1) मुझे लगता है कि निराशावादी लॉकिंग का उपयोग करने के कुछ साधन भी हैं। 2) नहीं, आरडीबीएमएस वह काम कर सकता है। 3) यदि डेटा एक ही समय में एकाधिक धागे द्वारा उपयोग किया जाता है। 4) सिंक्रनाइज़ेशन तब उपयोगी होता है जब दो थ्रेड को डेटा साझा करना होता है। अगर उन्हें जरूरत नहीं है, तो बहुत बेहतर! – OscarRyz
कोई भी फास्ट फूड रेस्तरां मल्टीथ्रेड का उपयोग करता है। एक थ्रेड आपको ऑर्डर लेता है और इसे तैयार करने के लिए एक और थ्रेड का उपयोग करता है, और अगले ग्राहक के साथ जारी रहता है। सिंक्रनाइज़ेशन पॉइंट केवल तभी काम करता है जब वे जानना चाहते हैं कि क्या तैयार करना है। एक मॉडल के बाद जो वास्तव में जीवन को सरल बनाता है। – OscarRyz