2012-12-21 14 views
7

में साझा लेनदेन प्रबंधक के साथ जेपीए एंटिटी मैनेजर और हाइबरनेट सत्र दोनों का उपयोग करना हमारे पास एक कठिन परिस्थिति है।स्प्रिंग

  1. एक बड़ी परियोजना है जो हाइबरनेट विशेष सुविधाओं का उपयोग करती है, इसलिए हाइबरनेट छोड़ नहीं सकती है।
  2. हम एम्बेडेड मोड में परियोजना के लिए activiti प्रक्रिया इंजन जोड़ने के लिए और (जो केवल EntityManager साथ काम करता है) जेपीए एक्सटेंशन के उपयोग
  3. कुछ संस्थाओं जेपीए लगातार इकाई में उपस्थित नहीं होना चाहिए बनाने के लिए कर रहे हैं क्योंकि जैसा कि activiti प्रलेखन सभी संस्थाओं चाहिए कहते हैं @Id है और @ IdClass/@ एम्बेडेड आईडी का उपयोग नहीं कर सकता है, इसलिए हमें ऐसी इकाइयों को लगातार इकाई
  4. से बाहर करना होगा, हम EntityManager और सत्र के लिए एक साझा लेनदेन प्रबंधक का उपयोग करना चाहते हैं। इसके अलावा डेटा स्रोत समान हैं (या यहां तक ​​कि साझा)
  5. सबकुछ वसंत है!

यह सभी प्रयास एक्टिविटी को अपने जेपीए एक्सटेंशन के लिए एंटीटी मैनेजर का उपयोग करने के लिए सक्षम करना है जबकि मौजूदा हाइबरनेट निर्भर कोड को काम जारी रखने के लिए अनुमति देना है।

उत्तर

3

सबसे पहले, ऊपर दिया गया आपका तीसरा बिंदु समायोजित करने के लिए मुश्किल साबित हो सकता है यदि आप एक दृढ़ता इकाई चाहते हैं और आप वास्तव में अपने हाइबरनेट इकाइयों में @ IdClass/@ एम्बेडेड आईडी का उपयोग कर रहे हैं। यहाँ दो संभव समाधान हैं: अपने प्रोजेक्ट में

  1. पुल जेपीए और अपने मौजूदा हाइबरनेट संस्थाओं के लिए एक हठ इकाई कॉन्फ़िगर करते हैं, लेकिन सत्र सीधे पहुंच कर हाइबरनेट करने के लिए मौजूदा कॉल को सौंपने के लिए continute। इस मामले में, आपकी कॉन्फ़िगरेशन जेपीए पर ले जाया जाएगा, लेकिन आपका कोड नहीं होगा। यह दृष्टिकोण यह भी मानता है कि आपके पास एक उचित फैशन में सत्र वस्तुओं को कुछ उचित अमूर्तता है। this question for the crux of the solution देखें। यदि आपके ऊपर उपरोक्त बिंदु 3 पर शून्य लचीलापन है, तो यह दृष्टिकोण आपके लिए एक विकल्प नहीं हो सकता है।

  2. सत्र सत्र और दृढ़ता इकाई दोनों बनाएं और दो एक्सए डेटा स्रोतों के साथ जेटीए का उपयोग करके लेनदेन समन्वयित करें। भले ही आपका डेटा एक ही डेटाबेस में रह सकता है, फिर भी आप यह सुनिश्चित करना चाहते हैं कि यदि आप इस दृष्टिकोण को लेते हैं तो आप अपने कॉन्फ़िगरेशन में अलग-अलग डेटा स्रोत बनाते हैं। जब आप वितरित लेनदेन में भाग लेते हैं तो यह वसंत की लेनदेन प्रॉक्सी को भ्रमित होने से रोक देगा। यह शायद सबसे साफ दृष्टिकोण है, लेकिन एक्सए लेनदेन की कलंक लेती है, जो आपके कंटेनर के आधार पर तकनीकी दिनों की तुलना में इन दिनों राजनीतिक समस्या से अधिक है।