2009-01-17 14 views
27

मैं विशेष रूप से जेपीए कोड जनरेशन तकनीकजेपीए जावा कोड पीढ़ी

पहले, सभी परियोजना जेपीए अनुपालन कोड उत्पन्न कर सकती हैं? (उदाहरण के लिए HibernateTools)

दूसरा, मैं कोड जनरेशन उपयोगिता को भी अनुकूलित करना चाहता हूं, क्योंकि इसे हमारे कॉर्पोरेट मानकों के अनुरूप होना है।

यदि नहीं, प्रतिबिंब का उपयोग कर जावा कोड उत्पन्न करने के लिए सभी ढांचे क्या उपलब्ध हैं? तो मैं खरोंच से लिख सकते हैं।

नोट: मैंने जेपीए कोड उत्पन्न करने के लिए ग्रहण का उपयोग किया और इसे अनुपालन करने के लिए इसे बार-बार दोबारा प्रतिक्रिया दी।

उत्तर

22

मैं भी प्रश्न को समझने कठिनाइयों है, लेकिन मैं अलग तरीके से व्यक्त करने की कोशिश करेंगे:

  • आप एक DB में डेटा का एक बहुत कुछ है और
  • आप नहीं चाहते जेपीए के माध्यम से इसे उपयोग करना चाहते मैन्युअल रूप से अलग डीबीएस/तालिकाओं
  • वर्तमान में सभी का उपयोग करने की कक्षाओं में लिखने के लिए/अपने मॉडल वर्गों के सबसे ग्रहण के भीतर से उत्पन्न कर रहे हैं
  • इन मॉडलों जेपीए एनोटेशन
  • मॉडल वर्गों (या ANNOT है आयनों) कॉर्पोरेट मानकों के अनुसार नहीं हैं

जब आप "जेपीए जावा कोड पीढ़ी" कहते हैं, तो मैं एक आपूर्ति डीबी कनेक्शन से जेपीए एनोटेटेड मॉडल कक्षाएं उत्पन्न करता हूं। ज्यादातर ढांचे अक्सर इसे रिवर्स इंजीनियरिंग के रूप में संदर्भित करते हैं।

  1. क्या कोड जनरेटर जेपीए एनोटेट वर्गों उत्पन्न करने के लिए सिफारिश की जा सकती:

    अब आपके पास दो प्रश्न हैं?

  2. क्या इन ढांचे के आउटपुट को अनुकूलित करना संभव है, और किस तरह से?

पहले सवाल का जवाब करने के लिए:

  • Hibernate Tools - पहले से ही सवाल में उल्लेख किया है, लेकिन मैं इस एक
  • EclipseLink
  • Netbeans

मैं वास्तव में की तरह पसंद करते हैं नेटबीन्स कोड पीढ़ी, विशेष रूप से यदि आप जेपीए से परिचित नहीं किसी को परिणाम दिखाते हैं।

अनुकूलन के स्तर पर मैं केवल हाइबरनेट उपकरण के साथ अनुभव साझा कर सकता हूं। विशेष रूप से पुनरुत्पादित परिणामों के लिए, ant-based tasks का उपयोग करने का प्रयास करें। आप आसानी से अपने निर्माण के लिए कुछ लक्ष्य जोड़ सकते हैं और कोड पीढ़ी दो स्तरों पर किया जा सकता है: का उपयोग कर properties

  • कस्टम freemarker templates
  • टेम्पलेट्स के साथ

    प्रदान करें

    • कॉन्फ़िगर निर्यातकों आप को कवर करने के लिए सक्षम होना चाहिए अधिकांश कॉर्पोरेट मानकों। हाइबरनेट-टूल्स पैकेज की pojo निर्देशिका में देखें। कोड जनरेशन को कस्टमाइज़ करने का सबसे आसान तरीका टेम्पलेट्स को कॉपी और अनुकूलित करना है और उन्हें pojos बनाने के लिए इस्तेमाल किए गए चींटी कार्य में हाइबरनेट-tools.jar से पहले रखा है।

      जैसा कि पहले से ही किसी अन्य टिप्पणी में बताया गया है, बाद में जेनरेट कोड को संशोधित करना मुश्किल हो सकता है। मुझे आशा है कि निम्नलिखित युक्तियां आपकी मदद कर सकती हैं:

      • विभिन्न फ़ोल्डरों में जेनरेट और अनुकूलित स्रोत फ़ाइलों को अलग करने का प्रयास करें।
      • कक्षाओं के लिए @MappedSuperclass का उपयोग करने के बारे में सोचें जिन्हें आप मैन्युअल चरण में अनुकूलित करना चाहते हैं।
    -4

    ठीक है, मूल रूप से आपके पास गलत तरीके से गलत तरीका है: JPA is the generation tool

    मैं यह कहता हूं क्योंकि जेपीए इकाइयों को उत्पन्न करने वाली एकमात्र चीज एसक्यूएल है और जेपीए का पूरा बिंदु चीजों को दूसरी तरफ करना है। आप पहले अपने ऑब्जेक्ट मॉडल को परिभाषित करते हैं और इससे, आप अपनी टेबल और क्वेरी जेनरेट कर सकते हैं।

    उदाहरण के लिए, मैंने परियोजनाओं को अपनी इकाइयों को परिभाषित करने के लिए हाइबरनेट का उपयोग किया है और फिर उनके पास एक चींटी निर्माण स्क्रिप्ट है जो हाइबरनेट इकाई मॉडल से डेटाबेस बनाता है।

    जेपीए इकाई परिभाषाएं - विशेष रूप से एनोटेशन के साथ किए गए - बिल्कुल कठिन नहीं हैं। वे वास्तव में आपका सबसे अच्छा विकल्प हैं क्योंकि किसी और चीज के उत्पाद होने की बजाय पहली चीज करना।

    इसके अलावा, एक अन्य टूल आपको नामित प्रश्न लिखने, रिश्तों पर सही कैस्केड विकल्पों को परिभाषित करने में मदद नहीं करेगा, और यदि आपने कोड जेनरेट किया है, तो आप इसे बाद में संशोधित कैसे करेंगे?

    यह जाने का सही तरीका नहीं है।

    +0

    इस उत्तर downvoted गया क्योंकि दोनों ओर से समस्या आ स्वीकार्य है और दोनों समझौते होते हैं – IcedDante

    0

    JPM2java देखें, यह जेपीए के लिए कोड जनरेटर है। एकमात्र पकड़ यह है कि यह SQL फ़ाइलों या तालिका से जेपीए कोड उत्पन्न नहीं करता है, आपको एक orm.xml फ़ाइल की आवश्यकता होगी। यदि आप सीधे तालिकाओं से कोड उत्पन्न करने के लिए एक उपकरण की तलाश में हैं, तो आप Netbeans को आजमा सकते हैं। इसमें जेपीए कोड सीधे टेबल

    1

    प्रोजेक्ट लॉम्बोक आपको मूल नामित क्वेरी जेनरेट करने की इजाजत देता है, यह संकलन समय पर एनोटेशन और कोड जनरेशन का उपयोग करने का एक और तरीका है।

    देखें:

    हाइबरनेट मंच पर एक पुरुष हाइबरनेट उपकरण के साथ एक traditionnal कोड पीढ़ी दृष्टिकोण का उपयोग कर लगता है: https://forum.hibernate.org/viewtopic.php?f=9&t=962223&p=2315766&hilit=named+queries+generate#p2315766

    मैं cletus से सहमत इस बिंदु पर कि आप सभी नामित प्रश्न उत्पन्न नहीं कर सकते हैं, लेकिन मुझे लगता है कि हम वस्तु के एक या कई क्षेत्रों के आधार पर बुनियादी नामित प्रश्नों जैसे खोजकर्ताओं की कल्पना कर सकते हैं।

    3

    मैंने Dali Persistence Eclipse Plugin का उपयोग किया है, यह उपकरण Indigo Java EE SR1 update site के माध्यम से डाउनलोड के लिए उपलब्ध है।

    प्लगइन स्थापित होने के बाद, आपके डीबी की रिवर्स इंजीनियरिंग बनाने के लिए, आपको एक नया जेपीए प्रोजेक्ट बनाने, डेटाबेस कनेक्शन सेट करने, जेपीए रनटाइम के स्वचालित डाउनलोड को लॉन्च करने (मेरे मामले ग्रहण लिंक में) शुरू करने की आवश्यकता है, फिर शुरू करें पीढ़ी की प्रक्रिया।

    कोड जनरेशन प्रक्रिया के दौरान आपको टेबल मैपिंग और जेनरेट कक्षाओं पर विवरण प्रदान करने के लिए कहा जाता है। पीढ़ी के अंत में कोड साफ है।

    5

    जेपीए कोड पीढ़ी के लिए एक और कुशल समाधान "Telosys उपकरण" है

    एक ग्रहण प्लगइनकस्टमाइज़ करने योग्य टेम्पलेट साथ एक मौजूदा डेटाबेस ("डेटाबेस firts" दृष्टिकोण) से काम कर रहे। यह समाधान अपने हल्के मॉडल और वेग टेम्पलेट्स (GitHub पर साझा)

    वेब साइट देखने के लिए डाली धन्यवाद से अधिक लचीला है: http://www.telosys.org/

    ग्रहण बाज़ार पर प्लगइन: http://marketplace.eclipse.org/content/telosys-tools

    का एक संक्षिप्त विवरण सिद्धांत: http://labs.sogeti.com/code-generation-can-it-be-simple-and-pragmatic/

    लिए जेपीए पीढ़ी, GitHub पर जेपीए टेम्पलेट्स उपलब्ध का उपयोग करें: https://github.com/telosys-templates-v3

    +1

    Telosys टेम्पलेट्स के लिए नया URL है: https://github.com/telosys-tools/ जेपीए के लिए बंडल "दृढ़ता-जेपीए-टीटीवर्जन" है – lgu

    +0

    अगर यह मेरे लिए काम करता है तो इसे आजमाएं .. जैसा कि मैं जेपीए के लिए नया हूं। –

    2

    Minuteproject एक जनरेटर उपकरण है और जेपीए 1/JPA2 उत्पन्न कर सकता है साथ ही ओआरएम जैसी कलाकृतियों को हाइबरनेट कर सकता है। यह डेटाबेस से रिवर्स इंजीनियरिंग पर आधारित है। आप जेनरेटर को अपने जावा कोड के लिए सम्मेलन लागू करने के लिए निर्देश दे सकते हैं जो आपके डीबी सम्मेलन का पालन नहीं करता है, लेकिन मानचित्रण सही होगा। (उदाहरण स्ट्रिप डीबी नाम उपसर्ग; ADMIN_ के साथ शुरू होने वाली तालिका जैसे कि ADMIN_ENVIRONMENT जावा क्लास के रूप में पर्यावरण (डब्ल्यू/आउट एडमिन) हैं इस पल के लिए 20+ conventions जो आपको अपने मॉडल को दोबारा कम करने के लिए अपने डीवीडी को कम करने में मदद करता है -OO के अनुकूल है।

    एक और दिलचस्प सुविधा updatable-code दोनों उत्पन्न कोड और अपने मॉडल और अगली पीढ़ी अपने संशोधनों aht संशोधित करने के लिए सक्षम करने के लिए रखा जाएगा है! जनरेटर विलय करता है।

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

    0

    जेपीए कोड रिवर्स पीढ़ी के लिए आदर्श उपकरण/ग्रहण प्लगइन हाइबरनेट उपकरण है। इसे अब जेबॉस टूल्स का हिस्सा बना दिया गया है। तो, आपके ग्रहण में जेबॉस टूल्स इंस्टॉल करने से शुरू हो गया है।

    फिर एक जेपीए परियोजना बनाएं। यह परियोजना रिवर्स पीढ़ी परियोजना से संबंधित आपके सभी कोड/कॉन्फ़िगरेशन के धारक के रूप में कार्य करेगी।जेबॉस टूल्स को स्थापित करने से पहले आपको लाभ मिलता है कि आपके जेपीए प्रोजेक्ट के साथ आपकी हाइबरनेट कॉन्फ़िगरेशन (हाइबरनेट टूल्स का हिस्सा) बन जाता है।

    अगला चरण हाइबरनेट उपकरण का उपयोग करने के लिए वास्तव में आपके डेटाबेस टेबल से संबंधित जेपीए POJO इकाइयों को उत्पन्न करने के लिए होगा।

    जेपीए POJO रिवर्स पीढ़ी के लिए चरणों में विस्तार से आप निम्नलिखित ट्यूटोरियल पर एक नज़र हो सकता है ... http://www.javabrahman.com/j2ee/how-to-do-reverse-code-generation-of-hibernatejpa-pojo-entities-using-jboss-tools-eclipse-plugin/

    ऊपर ट्यूटोरियल भी JBoss स्थापित करने के लिए एक जेपीए परियोजना बनाने के लिए और भी के लिए ट्यूटोरियल के लिंक हों समझने के लिए आपके ग्रहण स्थापना में उपकरण, जिनमें से दोनों जेपीए पीओजेओ इकाइयों के लिए पूर्व-आवश्यकताएं हैं, कोड कोड रिवर्स।

    -1

    कृपया JOOQ पर एक नज़र डालें।

    http://www.jooq.org/

    मुक्त स्रोत उपलब्ध है .....

    +0

    किस तरह के उदाहरण? क्या आप यहां एक पुन: पेश कर सकते हैं? – Nielsvh

    0

    ओपन सोर्स ग्राफिकल टूल जेपीए वर्ग उत्पन्न करने के लिए, कल्पना & डाटाबेस को संशोधित, इंजीनियरिंग रिवर्स मौजूदा डेटाबेस से स्रोत कोड और आयात मॉडल बाहर निकलने।

    NetBeans के लिए: http://jpamodeler.github.io/
    ग्रहण के लिए: https://www.eclipse.org/webtools/dali/

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