हाइबरनेट एक बहुत अच्छा ओएसजीआई नागरिक नहीं है क्योंकि कई धारणाएं हाइबरनेट कक्षा दृश्यता पर बनाता है ओएसजीआई कंटेनर में अब सत्य नहीं है।
Class.forName(<jdbc class name>)
के साथ जेडीबीसी ड्राइवरों को लोड करने का सामान्य तरीका ओएसजीआई के अंदर काम नहीं करता है, इस मामले में, हाइबरनेट ड्राइवर को आजमाएगा और लोड करेगा लेकिन इसे नहीं मिलेगा क्योंकि हाइबरनेट (और नहीं होना चाहिए) जेडीबीसी ड्राइवर पैकेज आयात करें।
जेडीबीसी चालक प्रबंधक यह भी काम करके स्मार्ट होने का प्रयास करता है कि कॉलिंग क्लास के क्लास लोडर को ड्राइवर को देखना चाहिए और यह ओएसजीआई के साथ भी संघर्ष करता है।
आप स्प्रिंग हाइबरनेट कॉन्फ़िगर करने के लिए उपयोग करते हैं तो मैं तुम्हें SimpleDriverDataSource
वर्ग के रूप में इस OSGi में काम करता है का उपयोग करने का सुझाव और स्प्रिंग आप बल्कि एक वर्ग के नाम हाइबरनेट का दृष्टांत करने की जरूरत है कि गुजर की तुलना में एक ठोस डेटा स्रोत के साथ हाइबरनेट कॉन्फ़िगर करने के लिए अनुमति देता है।
एक बार जब आप उस समस्या को दूर कर लेंगे तो आप शायद अपने डोमेन कक्षाओं को न देखकर हाइबरनेट के मुद्दों में भाग लेंगे। मुझे केवल एक्सएमएल मैपिंग दृष्टिकोण के साथ अनुभव है, क्योंकि मुझे लगता है कि ओएसजीआई में यह आसान है क्योंकि मुझे लगता है कि एनोटेशन के तरीके को एओपी बुनाई की आवश्यकता होती है और यह ओएसजीआई के साथ एक और वर्तमान दर्द-बिंदु है।
फिलहाल, जब तक आप स्प्रिंग के डीएम सर्वर की तरह कुछ उपयोग नहीं करते हैं, आपको जावा के क्लास लोडिंग तंत्र से अधिक परिचित होना होगा और आप वेनिला जावा और ओएसजीआई के बीच असंगतताओं के आसपास काम करने के लिए सेवाओं के लिए ओएसजीआई के दृष्टिकोण का उपयोग कैसे कर सकते हैं विश्व।
विशेष रूप से, एंटरप्राइज़ पुस्तकालय संदर्भ वर्ग लोडर का उपयोग कैसे करते हैं और आप इसका प्रबंधन कैसे कर सकते हैं। मैं ओएसजीआई सेवाओं में विरासत कोड को लपेटने के लिए स्प्रिंग डीएम का उपयोग कर रहा हूं क्योंकि इससे संदर्भ वर्ग लोडर को नियंत्रित करना आसान हो जाता है।
स्रोत
2009-04-13 18:45:33
लेकिन मैं नहीं कर सकते कि कैसे हाइबरनेट बंडल कभी स्पष्ट रूप से बिना सही JDBC-चालक मिलेगा देखना आयात करना उदाहरण के लिए। org.embedded.derby या org.mysql.jdbc .. –
क्या आपके पास अपने हाइबरनेट बंडल के स्रोत हैं? मैनिफेस्ट पर एक नज़र डालें और देखें कि एक्टिवेटर क्लास कौन सा है। फिर इस वर्ग को देखें और यह शायद आपके प्रश्न का उत्तर देगा – paweloque
"हाइबरनेट तो शायद इसके इंटरफ़ेस द्वारा ड्राइवर को देखता है, विशिष्ट ड्राइवर वर्गों को आयात करने की आवश्यकता नहीं है"। क्या इसका मतलब यह है कि हाइबरनेट बंडल में एक विशिष्ट जेडीबीसी-ड्राइवर स्थापित करने के लिए कुछ एपीआई है? (उदाहरण के लिए, mysql-jdbc सेट करें, सेट ऑरैक-जेडीबीसी इत्यादि। अन्यथा मैं नहीं देख सकता कि कैसे हाइबरनेट सही ड्राइवर प्राप्त करता है) –