2009-07-30 8 views
5

स्प्रिंग फ्रेमवर्क इसी तरह के दो वर्ग हैं: JdbcTemplate वर्ष, जावा 1.4 वर्ग है, और SimpleJdbcTemplate अच्छे तरीकों के साथ नए, है।मैं SimpleJdbcTemplate परQueryTimeout कैसे सेट करूं?

जेडीबीसी टेम्पलेट में एक विधि setQueryTimeout है, जो मूल रूप से मुझे अंतर्निहित स्टेटमेंट ऑब्जेक्ट पर उसी नाम के साथ एक विधि तक पहुंच प्रदान करती है।

वहाँ एक SimpleJdbcTemplate के साथ इसी तरह कुछ करने के लिए कोई तरीका है?

समाधान: skaffman के जवाब के आधार पर, मैं बनाने SimpleJdbcTemplate एक JdbcTemplate से अपने आप को आपत्ति है, इसलिए अब मैं जो कुछ भी मैं चाहता हूँ कर सकते हैं। कोड:

JdbcTemplate jdbcTemplate = this.getJdbcTemplate(); 
jdbcTemplate.setQueryTimeout(30); 
SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(jdbcTemplate); 

एक मुंह से थोड़ा सा, लेकिन काम पूरा हो जाता है।

अद्यतन: यह वास्तव में आवश्यकता से अधिक जटिल है। जवाब देखें।

+0

proably अधिक आवश्यकता से जटिल है, मेरे संपादित जवाब देखें। – skaffman

+0

क्वेरी टाइमआउट के लिए इकाई क्या है? – akirekadu

+0

@akirekadu - सेकंड्स। – itsadok

उत्तर

4

SimpleJdbcTemplatJdbcTemplate के लिए प्रतिस्थापन नहीं है, यह केवल कुछ जावा-अनुकूल पूरक है, कुछ संचालन के लिए जो varargs और जेनेरिक का सबसे अच्छा लाभ ले सकते हैं।

आप SimpleJdbcTemplate के लिए स्रोत को देखें, तो आप देखेंगे कि यह एक JdbcTemplate वस्तु को अपने काम के सभी प्रतिनिधियों, और इसलिए JdbcTemplate पर टाइमआउट (या अन्य विकल्प) की स्थापना करके, आप अप्रत्यक्ष रूप से उन पर सेट SimpleJdbcTemplate भी।

यदि आप SimpleJdbcTemplateSimpleJdbcDaoSupport.getSimpleJdbcTemplate() के माध्यम से प्राप्त कर रहे हैं, तो JdbcTemplate पहले ही सही तरीके से वायर्ड हो चुका है।

संपादित करें:

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

public class MyDao extends SimpleJdbcDaoSupport { 
    public void doStuff() { 
     getJdbcTemplate().setQueryTimeout(x); 
     getSimpleJdbcTemplate().execute(...); 
    } 
} 

SimpleJdbcTemplate के रूप में getJdbcTemplate द्वारा लिया गया है एक ही JdbcTemplate शामिल()।

आप SimpleJdbcDaoSupport का विस्तार नहीं करते हैं, तो हां, तो आप मैन्युअल रूप से एक SimpleJdbcTemplate खुद के निर्माण के लिए की जरूरत है।

+0

लेकिन यह कैसे मैं SimpleJdbcTemplate अंदर thats "फंस" JdbcTemplate उपयोग करते हैं? मेरे पास एक जेडीबीसीऑपरेशंस इंटरफ़ेस तक पहुंच है, जिसमें सेटटाइमआउट नहीं है। कुछ कोड दिखाने की देखभाल? – itsadok

+0

आपको लगता है कि उल्लेख नहीं था, अपने प्रश्न में, आप SimpleJdbcTemplate के बारे में पूछ रहे थे। आप जो वास्तव में चाहते हैं उसे स्पष्ट करने के लिए कृपया अपने प्रश्न को संशोधित करें। – skaffman

+0

नहीं, मेरी टिप्पणी अस्पष्ट थी। मेरा मतलब था कि एक SimpleJdbcTemplate ऑब्जेक्ट होने के बाद, मेरे पास 'getJdbcOperations()' विधि है। कोई 'getUnderlyingJdbcTemplate() 'विधि नहीं है। – itsadok