2009-06-25 23 views
31

मैं हाइबरनेट क्वेरी में परिवर्तनों का परीक्षण करने के लिए एक तेज़ (वास्तव में तेज़) तरीका खोज रहा हूं। मेरे पास हजारों अलग-अलग एचक्यूएल प्रश्नों (एक्सएमएल फाइलों में) और 100+ मैप किए गए वर्गों के साथ एक बड़ा एप्लीकेशन है और मैं एक पूरे प्रश्न में एक छोटे से बदलाव की जांच करने के लिए पूरे एप्लिकेशन को फिर से तैनात नहीं करना चाहता हूं।एचक्यूएल प्रश्नों का परीक्षण कैसे करें?

एक अच्छा सेटअप मुझे पुनर्वितरण से मुक्त करने और तेजी से पूछताछ की जांच कैसे सक्षम करेगा?

उत्तर

14

IntelliJ विचार के साथ अपनी पसंद के mechnism 'पहलू' कहा जाता है 8.1.3: अपने परीक्षण में, आप की तरह कुछ करना चाहते हैं। तुरन्त परीक्षण करने के लिए HQL क्वेरी:

  1. कोई डेटा स्रोत उपकरण बनाने -> डेटा स्रोत, जोड़े डेटा स्रोत, मामले में ड्राइवर, उपयोगकर्ता नाम और yor विकास db
  2. के पासवर्ड को परिभाषित आप न है पहले से ही एक hibernate.cfg या आप xml के माध्यम से अपने सत्र फैक्ट्री को एक अलग तरीके से कॉन्फ़िगर करते हैं: हाइबरनेट बनाएं।cfg फ़ाइल को संदर्भित सभी XML मानचित्रण के (और भी आसान से निपटने के लिए, सत्र कारखाने के लिए एक नाम को परिभाषित)
  3. 'परियोजना संरचना' अपनी पसंद के मॉड्यूल के लिए पहलू जोड़ सकते हैं और नए पहलू
  4. स्विच करने के लिए हाल ही में परिभाषित डेटा स्रोत आवंटित में
  5. जावा ईई देखें
  6. ओपन हाइबरनेट पहलुओं के लिए - नोड
  7. राइट क्लिक करें सत्र कारखाने और चुनें "ओपन HQL कंसोल"
  8. सांत्वना में HQL क्वेरी दर्ज ... और your're किया।

इस आरटीएफएम प्रश्न के लिए खेद है।

+2

इंटेलिजे में एचक्यूएल समर्थन के बारे में अधिक जानकारी यहां है: http://www.jetbrains.com/idea/features/java_hibernate.html –

+3

यदि आप नेटबीन का उपयोग कर रहे हैं, तो बस hibernate.cfg पर राइट क्लिक करें।एक्सएमएल, शायद आपके डिफ़ॉल्ट पैकेज में बैठा है, और 'Do HQL क्वेरी' चुनें –

+0

नवीनतम संस्करण पर विस्तृत सहायता: http://www.jetbrains.com/idea/webhelp/hibernate.html – Vadzim

10

आप क्वेरी चलाने के लिए hibernate tools in eclipse का उपयोग कर सकते हैं। जब भी आप कुछ कोशिश करना चाहते हैं तो यह आपको एचक्यूएल चलाने की अनुमति देगा।

यदि आप इंटेलिजे का उपयोग कर रहे हैं, तो Hibero है।

सूर्य से standalone editor है, लेकिन मैंने कोशिश नहीं की है।

+0

वहाँ IntelliJ विचार 8 के लिए एक समाधान (= प्लगइन, जो कुछ भी) मौजूद है? – Chris

+0

मैंने हिबेरो को एक लिंक जोड़ा। – stevedbrown

+0

हाँ, thxn। अगर यह काम करता है कि वे इसका वर्णन कैसे करते हैं, तो मुझे वही चाहिए जो मुझे चाहिए, लेकिन: "1 जनवरी 2008 से .. Hibero ™ व्यावसायिक कारणों से बंद कर दिया गया है।", तो अब क्या? – Chris

3

मैं एचएसक्यूएलडीबी डेटाबेस के साथ यूनिट-टेस्ट में अपने एचक्यूएल प्रश्नों का परीक्षण करता हूं। बस एक इकाई प्रबंधक बनाएं, इसे हाइबरनेट सत्र में डालें और क्वेरी करें।

final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("tacs-test", props); 

    final EntityManager entityManager = entityManagerFactory.createEntityManager(); 

    return (Session)entityManager.getDelegate(); 

बेस्ट ऐन्डर्स

+0

वास्तव में मुझे जो चाहिए, thx – Snicolas

3

तुमने कहा था तेज तरीका है, मैं अगर तुम जा पाने के लिए तेज तरीका है, या तेज तरीका चल रहे परीक्षण करने के लिए होती यकीन नहीं है, कुछ प्रारंभिक निवेश के साथ पाने के लिए परीक्षण लागू यह उत्तर बाद वाला है।

जिस तरह से मैंने इसे पहले किया है, JUnit और DBUnit के साथ कुछ सरल एकीकरण परीक्षण को लागू करना था।

संक्षेप में, आप डेटा के ज्ञात और प्रतिनिधि सेट के साथ अपना परीक्षण डेटाबेस सेट अप करने के लिए डीबीयूनीट का उपयोग करेंगे, और उसके बाद सादा जुनीट को अपने एचक्यूएल प्रश्नों वाले तरीकों का प्रयोग करने और परिणामों की पुष्टि करने के लिए उपयोग करेंगे।

उदाहरण के लिए,

अपने डेटाबेस सेट करें पहले जैसे डेटा का केवल एक निश्चित सेट को रोकने के लिए,

Product Name, Price 
Acme 100 Series Dynamite, $100 
Acme 200 Series Dynamite, $120 
Acme Rocket, $500 

यह कुछ आप अपने JUnit परीक्षण मामले का सेटअप() विधि में क्या होता है।

अब मान लें कि आपके पास इस इकाई के लिए एक डीएओ है, और "findProductWithPriceGreaterThan (int)" विधि है।

public void testFindProductWithPriceGreaterThanInt() { 
    ProductDAO dao = new HibernateProductDAO(); 
    //... initialize Hibernate, or perhaps do this in setup() 

    List products = dao.findProductWithPriceGreaterThan(110); 
    assertEquals(2, products.size()); 
    //... additional assertions to verify the content of the list. 
} 
+0

त्वरित/तेज़ के साथ मेरा मतलब था 'परिवर्तन-परीक्षण-परिवर्तन-परीक्षण' ... पुनरावृत्ति। – Chris

+0

@ क्रिस एक बार जब आपके पास डीब्यूनिट परीक्षण के लिए बेस क्लास है, तो आप एक मिनट से भी कम समय में परीक्षण विधियां लिख सकते हैं और वे सेकंड के लिए दौड़ सकते हैं। एक बड़े "रन" बटन के साथ एक समर्पित क्वेरी संपादक के रूप में तेज़ी से नहीं, लेकिन डीबीयूनीट परीक्षणों के बारे में अच्छी बात यह है कि आप उन्हें बचा सकते हैं और उन्हें रिग्रेशन परीक्षण के रूप में उपयोग कर सकते हैं। मैं व्यक्तिगत रूप से शुरुआती प्रयास 'एन'एरर और डीबीयूनीट के लिए ग्रहण हाइबरनेट उपकरण का उपयोग कर रहा हूं। –

2

ग्रहण बाजार में, आप जेबॉस टूल्स की खोज कर सकते हैं और दिए गए सूची से केवल हाइबरनेट टूल चुन सकते हैं।

6

मैंने & पूर्वावलोकन एचक्यूएल का परीक्षण करने के लिए एक सरल उपकरण लिखा, यह मुख्य विधि के साथ सिर्फ एक जावा वर्ग है।

आप यहाँ कोड पा सकते हैं: https://github.com/maheskrishnan/HQLRunner

यहाँ

स्क्रीन शॉट है ...

enter image description here

1

ग्रहण में

  1. स्थापित हाइबरनेट उपकरण (Jboss)
  2. स्विच परिप्रेक्ष्य को हाइबरनेट करने के लिए
  3. खुला/क्लिक हाइबरनेट विन्यास खिड़की खिड़की पर
  4. Rt क्लिक करें और विंडो क्लिक पर विन्यास
  5. Rt क्लिक करें जोड़ें/खुला HQL संपादक
  6. प्रकार और अपने HQL प्रश्नों निष्पादित और हाइबरनेट क्वेरी परिणाम विंडो में अपने परिणाम प्राप्त

अधिक जानकारी के लिए इस लिंक का पालन करें http://docs.jboss.org/tools/OLD/2.0.0.GA/hibernatetools/en/html/plugins.html