मैं एक बहु थ्रेडेड एप्लिकेशन के लिए हाइबरनेट का उपयोग करने की कोशिश कर रहा हूं जिसमें प्रत्येक थ्रेड किसी ऑब्जेक्ट को पुनर्प्राप्त करता है और इसे किसी तालिका में डालने का प्रयास करता है। मेरा कोड नीचे जैसा दिखता है। मेरे पास प्रति थ्रेड स्थानीय हाइबरनेट सत्र ऑब्जेक्ट हैं और प्रत्येक InsertData में मैं शुरू करता हूं ट्रांज़ेक्शन और प्रतिबद्धता।एक बहु थ्रेडेड एप्लिकेशन में हाइबरनेट का उपयोग कैसे करें?
समस्या का सामना करना पड़ रहा है कि कई बार मैं मिलता है "org.hibernate.TransactionException: नेस्टेड लेनदेन समर्थित नहीं"
जब से मैं हाइबरनेट करने के लिए मैं नहीं जानता कि यदि मैं क्या कर रहा हूँ सही है या नया हूँ नहीं? कृपया मुझे बताएं कि बहु थ्रेडेड ऐप में हाइबरनेट का उपयोग करने के लिए सही तरीका क्या है और ऊपर उल्लिखित अपवाद से कैसे बचें।
धन्यवाद
public class Worker extends Thread {
private Session session = null;
Worker() {
SessionFactory sf = HibernateUtil.getSessionFactory(); // Singleton
session = sf.openSession();
session.setFlushMode(FlushMode.ALWAYS);
}
public void run() {
// Some loop which will run thousand of times
for (....)
{
InsertData(b);
}
session.close();
}
// BlogPost Table has (pk = id AutoGenerated), dateTime, blogdescription etc.
private void InsertData(BlogPost b) {
session.beginTransaction();
Long id = (Long) session.save(b);
b.setId(id);
session.getTransaction().commit();
}
}
मेरे हाइबरनेट कॉन्फ़िग फ़ाइल है c3p0.min_size=10
और c3p0.max_size=20
क्या यह 'b.setId()' होना चाहिए? –
हाँ, बस इसे ठीक किया गया। मेरे वास्तविक कोड का एक न्यूनतम उदाहरण बनाने की कोशिश करते समय टाइपो हुआ। – Rahul