2011-11-29 12 views
10

क्या किसी को एनोटेशन और हाइबरनेट कॉन्फ़िगरेशन फ़ाइलों का उपयोग करने के बीच सख्त विकल्प बनाना पड़ता है, या क्या एक ही प्रोजेक्ट में एक ही समय में दोनों तरीकों का उपयोग करना संभव है?क्या हाइबरनेट में एक ही प्रोजेक्ट में एनोटेशन और एचबीएम.एक्सएमएल फाइलों का उपयोग करना संभव है?

हमारे पास .hbm.xml फ़ाइलों के साथ कॉन्फ़िगर किए गए हाइबरनेट 3.2.5 और पीओजेओ के साथ एक बड़ी परियोजना है। परियोजना हाइबरनेट SessionManager फैक्ट्री का उपयोग करती है और जेटीए-आधारित EntityManager फैक्ट्री नहीं।

इस तरह से कॉन्फ़िगर किए गए सौ से अधिक POJO कॉन्फ़िगर किए गए हैं और मूल डेवलपर टीम एनोटेशन पर स्विच करने के लिए अनिच्छुक है।

इस बीच हमें अधिक पीओजेओ के साथ परियोजना का विस्तार करने की आवश्यकता है जिसे हम हाइबरनेट एनोटेशन के साथ कॉन्फ़िगर करने के इच्छुक हैं और यदि संभव हो तो हाइबरनेट के साथ रहना चाहते हैं - और जेपीए पर स्विच न करें।

क्या कुछ पीओजेओ और अन्य लोगों के लिए एनोटेशन के लिए .hbm.xml कॉन्फ़िगरेशन फ़ाइलों के संयोजन का उपयोग करना संभव है?

+1

नेटबीन जैसे उपकरणों की चक्कर आना और कई मामलों में ग्रहण, मुझे अक्सर त्रुटियां मिलती हैं जब भी मैं कोड को सही और कॉन्फ़िगर करता हूं।तो कुछ जावा विशेषज्ञों के लिए भी कहा जाता है कि "डुनो, कभी कोशिश नहीं की गई", मैं यह सुनिश्चित किए बिना अपना समय परीक्षण-त्रुटि बर्बाद नहीं करूंगा कि यह मेरी त्रुटि है, या आईडीई, या सिर्फ इसलिए कि यह जावा में नहीं किया जा सकता है/हाइबरनेट। – Skyhan

उत्तर

7

मनु ने जवाब दिया है, लेकिन यदि आप एनोटेशन पर स्विच करने जा रहे हैं और आप उन hbm.xml को एनोटेशन में कनवर्ट करना चाहते हैं। कृपया चलते रहे। आप उन टूल्स का उपयोग कर सकते हैं जो मौजूदा टेबल से एनोटेशन के साथ pojo कक्षाएं उत्पन्न करेंगे। यहां तक ​​कि उन उपकरणों का उपयोग करने के लिए, आपको दूसरे कोड को बदलने की ज़रूरत नहीं है, बस पहले की तरह pojos उत्पन्न करें। यानी संपत्ति के नाम नहीं बदलते हैं। मैंने एक ही तरह की परियोजना पर काम किया है और मैंने इसके लिए चींटी स्क्रिप्ट का उपयोग किया है।

13

हाँ आप कर सकते हैं।Documentation कहते

ध्यान दें कि आप विरासत hbm.xml उपयोग और एनोटेशन दृष्टिकोण मिश्रण कर सकते हैं। संसाधन तत्व या तो एक एचबीएम फ़ाइल या एक ईजेबी 3 एक्सएमएल परिनियोजन वर्णनकर्ता हो सकता है।

आप फिर भी एक वर्ग में कई बार की घोषणा नहीं कर सकते हैं (चाहे एनोटेट या hbm.xml के माध्यम से):

कुछ जाँच बिंदु हालांकि रहे हैं। आप किसी इकाई पदानुक्रम में कॉन्फ़िगरेशन रणनीतियों (एचबीएम बनाम एनोटेशन) को मिश्रित नहीं कर सकते हैं।

आप कुछ और जानकारी here पा सकते हैं।

0

मुझे लगता है कि यह पोस्ट बहुत अच्छा है लेकिन वास्तविक कोड उदाहरण के साथ यह बेहतर होगा। मैंने मनुपके रेफरी की कोशिश की है और इस तरह यह काम करता है।/> और < मानचित्रण वर्ग = "मेरी http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/ch01.html#setup-configuration

//typical way to use cfg.xml 
Configuration cfg = new Configuration(); 
SessionFactory f = cfg.configure("hibernate.cfg.xml").buildSessionFactory(); 
Session s = f.openSession(); 
s.persist(new EntityObj()); 

//to use both annotation & cfg.xml mappings, use AnnotationConfiguration instead of Configuration 
AnnotationConfiguration cfg = new AnnotationConfiguration(); 
SessionFactory f = cfg.configure("hibernate.cfg.xml").buildSessionFactory(); 
Session s = f.openSession(); 
s.persist(new EntityObj()); 

AnnotationConfiguration दोनों < मानचित्रण संसाधन =" your_entity.hbm.xml "पार्स करने के लिए हमेशा की तरह cfg.xml पढ़ा जाएगा:
मेरे वास्तविक रेफरी यहाँ है। entity.objclass "/ >

अस्वीकरण: मैंने पुराने हाइबरनेट वर्क 3.2.1 का उपयोग करने की कोशिश की और यह ठीक चल रहा है।

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

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