2009-07-31 14 views
9

मैं अपने डेटा मॉडल के लिए जेपीए दृढ़ता का उपयोग ईक्लीपसेलिंक के साथ दृढ़ता प्रदाता के रूप में करता हूं। मेरे पास एक मॉड्यूलर (ओएसजीआई) एप्लीकेशन है और मॉड्यूल में से एक मानक डेटा मॉडल और एक स्थिरता इकाई है जिसमें स्वचालित रूप से पैकेज से सभी इकाइयां शामिल होती हैं। दृढ़ता प्रदाता एक और मॉड्यूल में है, जो अच्छी तरह से काम करता है।मैं अलग-अलग JAR से निरंतरता इकाइयों को कैसे विलय/विस्तारित कर सकता हूं?

अब मैं एक तीसरी मॉड्यूल चाहता हूं कि कुछ इकाइयों को दृढ़ता इकाई में जोड़ दें। मैं उसको कैसे करू? मुझे this solution मिला, जो वसंत के लिए विशिष्ट लगता है जिसका मैं उपयोग नहीं कर रहा हूं। उस दृष्टिकोण का सारांश एक पोस्ट प्रोसेसर लिखना है जो दृढ़ता इकाई प्रसंस्करण में हुक करता है और persistence.xml फ़ाइलों से मैन्युअल रूप से <class> प्रविष्टियों को विलय करता है।

क्या दृढ़ता इकाइयों को मर्ज करना संभव है? क्या कोई कामकाज सुझा सकता है?

+0

क्या सभी तीन मॉड्यूल एक में होने चाहिए। –

+0

नहीं, प्रत्येक मॉड्यूल एक जार है जिसे तब ओएसजीआई कंटेनर (अपाचे फ़ेलिक्स, मेरे मामले में) में लोड किया जाता है। Eclipselink या तो अपने स्वयं के JAR में या मॉड्यूल में से एक में है और persistence.xml फ़ाइलों के लिए दृश्यमान संकुल स्कैन करता है। यह अच्छी तरह से काम करता है। –

उत्तर

5

सबसे पहले, यहां Dynamic-JPA पर एक लिंक है, वे गतिशील रूप से इकाइयों को अद्यतन करने का एक तरीका प्रदान करते हैं। मैं पहले इस विकल्प का पता लगाऊंगा।


यहाँ कुछ शीर्ष स्तर दृढ़ता के साथ काम कर चित्र और EntityManagerFactory कि उपयोगी हो सकता है देखते हैं OSGi से एक और लिंक ( PDF) है।


एक दिलचस्प दृष्टिकोण लेकिन असंबंधित

यहाँ एक persistence.xml फ़ाइल (जो तुम सच में ऐसा नहीं कर सकते का उपयोग किए बिना creating persistence units programmaticly पर एक लिंक है, लेकिन जवाब समस्या के लिए कुछ अंतर्दृष्टि प्रदान हो सकता है)। philk persistence.xml फ़ाइल से प्रदाता को हटाने के तरीके पर एक सुझाव प्रदान करता है। यदि आप इस विधि का पालन करते हैं, तो आप अपनी संस्थाओं को एक विशिष्ट दृढ़ता इकाई में जोड़ सकते हैं।

"ठीक है हाइबरनेट के अच्छे पुराने दिनों में मैं सिर्फ एक सत्र बना सकते हैं और मक्खी पर यह करने के लिए अपने वर्गों जोड़ें। लगता है कि यह सूर्य जेपीए चश्मा में बनाया कभी नहीं। हालांकि मैं पूरी तरह से से प्रदाता को हटा दिया है persistence.xml और इसे ईएमएफ के गुणों का उपयोग करके ईएल को सौंपें। यह ठीक काम करता प्रतीत होता है। Persistence.xml में छोड़ी गई एकमात्र चीज वर्गों की है। मुझे लगता है कि यह खुलासा करना मुश्किल नहीं होगा विधि जो ईएल में वर्गनाम को पार करती है और इसके लिए क्लासडिस्क्रिप्टर बनाता है ईएल जेपीए प्रदाता के सार्वजनिक तरीके के रूप में। "


अंत में, हम हैकिश समाधान पर आते हैं, पहले ही सुझाव दिया जा चुका है, इस तथ्य के बाद बस अपनी persistence.xml फ़ाइलों को संपादित करें। मेरा मानना ​​है कि यह काम करेगा (हालांकि, मैंने कोशिश नहीं की है) लेकिन यह निश्चित रूप से एक विकल्प है।

संबंधित मुद्दे

 संबंधित मुद्दे