मेरे पास डेटा एक्सेस क्लास है जो स्टैंड-अलोन जावा एप्लिकेशन के हिस्से के रूप में चलती है। वर्तमान में यह काम कर रहा है जिसका मतलब है कि एक लेनदेन प्रबंधक परिभाषित किया गया है, लेकिन मैं लेनदेन के दायरे को कम करने के लिए कक्षा को दोबारा प्रतिक्रिया देना चाहता हूं, लेकिन अगर मुझे लगता है कि मुझे org.hibernate.HibernateException: कोई हाइबरनेट सत्र थ्रेड से बंधे नहीं है, और कॉन्फ़िगरेशन नहीं करता है पर गैर-लेन-देन के निर्माण की अनुमति दें जो दर्शाती है कि @ ट्रांसेक्शन को किसी भी तरह से पहचानने से रोक दिया गया है।गैर-लेनदेन वाले हिस्सों को विभाजित करने के लिए आप @ ट्रान्सएक्शनल विधि को दोबारा कैसे प्रतिक्रिया देते हैं
मेरे मूल संस्करण में रिफैक्चर किए गए तरीके निजी थे लेकिन मुझे कुछ मामलों में सार्वजनिक रूप से बदलने की सिफारिश मिली, क्योंकि एनोटेशन नहीं लिया जाएगा।
public class DoStuff {
@Transactional
public void originalMethod() {
// do database stuff
...
// do non-database stuff that is time consuming
...
}
}
मुझे क्या करना चाहते हैं निम्नलिखित
public class DoStuff {
public void originalMethod() {
doDatabaseStuff()
doNonDatabaseStuff()
}
@Transactional
public void doDatabaseStuff() {
...
}
public void doNonDatabaseStuff() {
...
}
}
आपका लेन-देन प्रबंधक कहां है? क्या आप अधिक जानकारी जोड़ सकते हैं? – Chris
क्या आपकी कक्षा DoStuff किसी भी इंटरफेस को लागू करती है? –
कोई इंटरफेस नहीं है, और लेनदेन प्रबंधक को परिभाषित किया गया है क्योंकि यह मूल वर्ग के लिए काम करता है। –