के लिए अधिक उपयोग करने योग्य विकल्प this answer में वर्णित अनुसार जेपीक्यूएल या कच्चे एसक्यूएल का उपयोग करने पर कुछ फायदे हैं: सुरक्षा टाइप करें; मित्रता को दोबारा प्रतिक्रिया देना; तारों पर कम निर्भरता (लेकिन अभी भी कुछ है)। और एक बहुत बड़ा नुकसान: वे कम पठनीय और आसानी से बदसूरत हैं। क्या संबंधपरक डेटाबेस तक पहुंचने के लिए एक (गैर-जेपीए) जावा एपीआई है जो टाइपएफ़ और पठनीय दोनों है?मानदंड एपीआई
उत्तर
Timo Westkämper ने QueryDSL के साथ अच्छा काम किया है। यह लाइब्रेरी विभिन्न दृढ़ता प्रदाताओं (जेपीए, मोंगोडीबी, लुसीन ...) से पूछताछ के लिए एक डीएसएल प्रदान करती है।
लेकिन मैंने अक्सर हाथ से बने समाधानों का उपयोग किया है जो सबसे आम प्रश्नों को सरल बनाता है (अपने कुछ क्षेत्रों को प्रतिबंधित करने वाली इकाई सूचीबद्ध करता है), मुझे हमेशा एक ही पंक्ति लिखने से रोकता है। सबसे जटिल प्रश्नों के लिए मैंने अपठनीय और वर्बोज़ मानदंड API पर स्विच किया।
MyBatis कस्टम एसक्यूएल, संग्रहित प्रक्रियाओं और उन्नत मैपिंग के लिए समर्थन के साथ एक प्रथम श्रेणी के हठ रूपरेखा है। MyBatis लगभग सभी जेडीबीसी कोड और पैरामीटर की मैन्युअल सेटिंग और परिणामों की पुनर्प्राप्ति को समाप्त करता है। MyBatis डेटाबेस रिकॉर्ड्स में कॉन्फ़िगरेशन और मैप प्राइमेटिव्स, मैप इंटरफेस और जावा पीओजेओ (सादा ओल्ड जावा ऑब्जेक्ट्स) के लिए सरल एक्सएमएल या एनोटेशन का उपयोग कर सकते हैं।
या, nobeh suggested के रूप में: jOOQ।
इस संबंध में, आप [jOOQ] (http://www.jooq.org/) या [JDBI] (http://www.jdbi.org/) पर भी एक नज़र डालना चाहेंगे। – nobeh
jOOQ, हाँ; जेडीबीआई, नहीं - जेडीबीआई के पास अपारदर्शी तारों पर समान निर्भरता है जो जेपीक्यूएल करता है। –
मैं पाया है निम्नलिखित उपयोगिता वर्ग के चेहरे पर एक आसान जेपीए खोज करने के लिए "परम" समाधान: DynamicQueryBuilder
यह मेटा मॉडल देता है, तो आप जुड़ जाता है का उपयोग कर संबंधों का वर्णन करने के जरूरत नहीं होगी ।
यह टेम्पलेट pojo द्वारा खोज !!! बस मानों को एक इकाई उदाहरण में रखें और उनका उपयोग मानदंड के रूप में किया जाएगा!
यह निर्माता पैटर्न का उपयोग करता है, इसलिए यह बहुत पठनीय है!
बैंक बैंक = नया बैंक(); bank.setId (12 एल); bank.setAchCode ("1213"); bank.setCbeCode ("1234"); bank.setStatus (नए लुकअप (1 एल)); bank.setAchShortName ("121");
सूची ids = नया ArrayList(); ids.add (1); ids.add (2); ids.add (3); ids.add (4); ids.add (5);
सूची cbeCodes = new ArrayList(); cbeCodes.add ("1111"); cbeCodes.add ("2222");
डायनामिकQueryबिल्डर क्वेरी DyncBuilder1 = नया डायनामिकQueryबिल्डर। बिल्डर (शून्य)। चयन (बैंक) .withOperType (Operator.OperType.AND)। withAdvancedParam ("cbeCode", की तरह, PERCENT_AROUND) .withAdvancedParam ("आईडी", में, आईडी) .withAdvancedParam ("achCode", बीच, cbeCodes) .withAdvancedParam ("achShortName", जी.टी.) .orderBy ("आईडी") .orderBy ("cbeCode", सत्य) .orderBy ("status.code", true) .build();
System.out.println (queryDyncBuilder1।getQueryString());
आप ऊपर कॉल घटक निम्न का निर्माण करेगी JPQL क्वेरी परिणामस्वरूप चलाते हैं:
SELECT b
FROM Bank b
WHERE b.status = :status
AND b.cbeCode LIKE :cbeCode
AND b.achShortName > :achShortName
AND b.id IN :id
AND (b.achCode BETWEEN :achCodeFrom AND :achCodeTo)
ORDER BY b.status.code DESC, b.id ASC, b.cbeCode DESC
"यह बिल्डर पैटर्न का उपयोग करता है, इसलिए यह बहुत पठनीय है" मुझे इस संबंध में QueryDSL बहुत कुछ पसंद है। –
- 1. मानदंड एपीआई
- 2. मानदंड एपीआई
- 3. हाइबरनेट मानदंड एपीआई -
- 4. हाइबरनेट मानदंड एपीआई '
- 5. जेपीए मानदंड एपीआई
- 6. निबर्ननेट मानदंड एपीआई
- 7. जेपीए मानदंड एपीआई
- 8. हाइबरनेट मानदंड एपीआई
- 9. आदेश मानदंड एपीआई
- 10. जेपीए/मानदंड एपीआई - जैसा और बराबर समस्या
- 11. (आलसी) बाएं बाहरी बाहरी हाइबरनेट मानदंड एपीआई
- 12. जेपीए मानदंड एपीआई अभिव्यक्ति पैरामीटर सूची
- 13. जेपीए नामांकित क्वेरीज़ बनाम मानदंड एपीआई?
- 14. हाइबरनेट मानदंड क्वेरी एकाधिक मानदंड
- 15. जेपीए-शैली मानदंड/मानदंड हाइबरनेट सत्र से प्रश्नकर्ता प्रश्न
- 16. क्या मानदंड एपीआई में Restrictions.eq (सत्य, झूठी) जैसी कुछ है?
- 17. जेपीए 2 मानदंड एपीआई में विशिष्ट कॉलम का चयन करना?
- 18. JPA2 मानदंड एपीआई के साथ चयन मैक्स टाइमस्टैम्प
- 19. जेपीए 2 + मानदंड एपीआई - एक सबक्वायरी को परिभाषित करना
- 20. हाइबरनेट मानदंड एपीआई: एन यादृच्छिक पंक्तियां प्राप्त करें
- 21. जेपीए मानदंड ट्यूटोरियल
- 22. जेपीए मानदंड निर्माता
- 23. हाइबरनेट कई से अधिक बुद्धिमान मानदंड मानदंड
- 24. हाइबरनेट मानदंड API
- 25. NHibernate मानदंड संग्रह में
- 26. Grails मानदंड
- 27. मानदंड क्वेरी
- 28. मानदंड लाइब्रेरी
- 29. हाइबरनेट मानदंड
- 30. nHibernate मानदंड
[एक और पढ़ सुझाव] (http://stackoverflow.com/q/825141/248082) – nobeh