2011-10-17 7 views
6

मेरे पास जावा लाइब्रेरी है जहां मैं वसंत के जेडीबीसी समर्थन का उपयोग कर जेडीबीसी के माध्यम से डीबी तक पहुंचता हूं। इस पुस्तकालय में प्रत्येक तालिका के लिए लगभग एक डीएओ कक्षा होती है जिसे मुझे एक्सेस करने की आवश्यकता होती है, जो सौ से अधिक है। वर्तमान में मैं एक नई जेडीबीसी टेम्पलेट, या इसके रूपों में से एक को तुरंत चालू करता हूं, हर बार मुझे एक नई क्वेरी करने की आवश्यकता होती है। क्या यह अच्छा अभ्यास माना जाता है या क्या मुझे एक जेडीबीसी टेम्पलेट का पुन: उपयोग करना चाहिए जितना मैं कर सकता हूं? मैंने वास्तव में किताबों या ऑनलाइन दस्तावेज दोनों दृष्टिकोणों के उदाहरण देखे हैं।क्या प्रत्येक क्वेरी में एक नया जेडीबीसी टेम्पलेट चालू करना या हर जगह एक इंजेक्ट करना बेहतर है?

संदर्भ एक जे 2 ईई आवेदन है, लेकिन आदर्श रूप से कोड विभिन्न संदर्भों में प्रयोग योग्य होना चाहिए, उदाहरण के लिए ऑफलाइन परीक्षण या कमांड लाइन समर्थन उपकरण में।

उत्तर

4

इंजेक्ट करें, तत्काल परेशान क्यों करें? (यदि आप मतलब "स्प्रिंग संदर्भ के माध्यम से दृष्टांत" या "new का उपयोग कर का दृष्टांत" स्पष्ट नहीं है।)

अधिकांश नमूने मैं config में ऐसा देखा है, मैं भी यकीन है कि मैंने देखा है उन्हें मैन्युअल रूप से instantiated नहीं कर रहा हूँ डेमो/टेस्ट कोड के बाहर। मुझे इसे मैन्युअल करने के लिए थोड़ा सा लाभ दिखाई देता है, और यदि वसंत के बाहर किया जाता है तो शून्य।

+0

क्या यह धागा सुरक्षित है, तो सिंगलटन पर्याप्त है या नहीं? – stivlo

+0

मुझे इस पुस्तकालय में विरासत मिली और यह पहले से ही इस तरह लिखा गया था। –

+0

एक नोट के रूप में यह संभवतः * खराब * अभ्यास तत्काल टेम्पलेट्स रखने के लिए है। – hvgotcodes

3

हालांकि एक नया जेडीबीसी टेम्पलेट बनाने में बहुत अधिक ओवरहेड शामिल नहीं है, वहां बहुत अधिक बिंदु नहीं है। JdbcDaoSupport क्लास, JdbcTemplate आधारित DAO को संभालने के लिए उपयोगी एक अमूर्त वर्ग लगातार प्रत्येक डीएओ को डेटासोर्स इंजेक्ट करने की अनुमति देता है (और कवर के नीचे कवर उस डेटासोर्स के आधार पर एक जेडीबीसी टेम्पलेट को तत्काल करता है) या जेडीबीसी टेम्पलेट इंजेक्ट करता है। आप कर सकते हैं के बाद से या तो आप केवल बाद क्या करना होगा अगर आप एक या अधिक निम्नलिखित गुण की सेटिंग के द्वारा अपने JdbcTemplate अनुकूलित करने के लिए देख रहे थे:

  • fetchSize
  • ignoreWarnings
  • maxRows
  • nativeJdbcExtractor
  • queryTimeout
  • skipResultsProcessing
  • exceptionTranslator

आपके पास इन गुणों के प्रत्येक संयोजन के लिए एक जेडीबीसी टेम्पलेट होगा। इन सभी में डिफ़ॉल्ट हैं, इसलिए यदि आप उन्हें ओवरराइड करने जा रहे हैं तो उन्हें सेट करना केवल जरूरी है। आपके डीएओ की विविधता के आधार पर, आपके पास एक या कई हो सकते हैं। या JdbcDaoSupport को विस्तारित करने के मामले में, आपके पास कोई भी नहीं हो सकता है, प्रत्येक डीएओ को सिर्फ डेटासोर्स को डिफॉल्ट जेडीबीसी टेम्पलेट में कवर के नीचे लपेटें।

0

JdbcTemplate वर्ग के उदाहरण धागा सुरक्षित एक बार, कॉन्फ़िगर किया गया है ताकि आप एक JdbcTemplate का एक उदाहरण कॉन्फ़िगर कर सकते हैं और फिर सुरक्षित रूप से कई DAOs (या खजाने) में इस साझा संदर्भ इंजेक्षन कर रहे हैं। अधिक जानकारी के लिए: JdbcTemplate-idioms

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