java - is rollback possible in hibernate if one transaction fails among multiple transaction to different tables? -
मेरे पास एक विधि है:
// तरीके निजी शून्य रूपांतरण (ट्रांसफार्मलिस्ट कनवर्ज़न सूची) { टेबल ए टीए = ट्रांसफार्मलाइस्ट.गेटटेबलए (); टेबलब टीबी = ट्रांसफॉर्मलिस्ट.गेटटेबलबी (); टेबलसी टीसी = ट्रांसफॉर्मलिस्ट.गेटटेबलसी (); daoObj.saveA (टीए); daoObj.saveB (टीबी); daoObj.saveC (टीसी); } अब,
// save ए मेहोटोड सार्वजनिक शून्य सेव (तालिका ए टीए) {सत्र सत्र = संदर्भ.गेटहाइबरनेट सत्र (); कोशिश {if (सत्र! = शून्य) {लेनदेन टीएक्स = session.beginTransaction (); tx.begin (); session.merge (टीए); tx.commit (); }} पकड़ (अपवाद ई) {tx.rollback (); कुछ कुछ एक्सक्साशन फेंकें (ई। मेसेसेज ()); } अंत में {यदि (सत्र! = नल) {session.clear (); इसी तरह, // saveB मेहोटोड सार्वजनिक शून्य बचाना (TableB टीबी) {सत्र सत्र = संदर्भ। टैग: हेबरनेटसेशन (); कोशिश {if (सत्र! = शून्य) {लेनदेन टीएक्स = session.beginTransaction (); tx.begin (); session.merge (टीबी); tx.commit (); }} पकड़ (अपवाद ई) {tx.rollback (); कुछ कुछ एक्सक्साशन फेंकें (ई। मेसेसेज ()); } अंत में {यदि (सत्र! = नल) {session.clear (); }}} और,
// saveC मेहोटोड सार्वजनिक शून्य बचाने के लिए (तालिका सीटीसी) {सत्र सत्र = संदर्भ.गेटहाइबरनेट सत्र (); कोशिश {if (सत्र! = शून्य) {लेनदेन टीएक्स = session.beginTransaction (); tx.begin (); session.merge (टीसी); tx.commit (); }} पकड़ (अपवाद ई) {tx.rollback (); कुछ कुछ एक्सक्साशन फेंकें (ई। मेसेसेज ()); } अंत में {यदि (सत्र! = नल) {session.clear (); '' रूपांतरण '' विधि को बुलाते समय, अगर saveA और saveb विधि सफल होती है और फिर कुछ अपवाद saveC पद्धति में होता है, तो क्या तालिकाऐ और टैबबीबी रिकॉर्ड को रोलबैक करना संभव है? टेबिलसी रिकार्ड के साथ)
नहीं। आप अपने लेन-देन को कम से कम एक स्तर के उच्च स्तर पर ले जाने के लिए कदम उठाएंगे: एक लेन-देन बनाएं, और बचत करें ए (), सेव बी () और बचाएंसी () उस लेनदेन के अंदर। बचाने के तरीकों के भीतर लेनदेन को संभाल नहीं।
बेशक, यह केवल एक संभावना है स्प्रिंग की तरह चौखटे हैं, जो आपके लेन-देन का प्रबंधन करने में बहुत मदद करते हैं।
Comments
Post a Comment