2011-08-28 10 views
5

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

मैं JdbcTemplate और TransactionTemplate का उपयोग करना चाहता हूं। मैं डेटा कनेक्शन के रूप में अपने कनेक्शन पूल को initilizing और एक डेटासॉर के रूप में एक लेनदेन प्रबंधक बनाने के द्वारा शुरू करते हैं?

transactionTemplate = new TransactionTemplate(transactionManager); 
JdbcTemplate jdbc = new JdbcTemplate(transactionManager.getDataSource()); 

अब एकाधिक धागे transactionTemplate और jdbc का उपयोग:

 BoneCPConfig connectionPoolConfig = new BoneCPConfig(); 
    connectionPoolConfig.setJdbcUrl(...); 
    connectionPoolConfig.setUsername(...); 
    connectionPoolConfig.setPassword(...); 
    connectionPoolConfig.setMinConnectionsPerPartition(...); 
    connectionPoolConfig.setMaxConnectionsPerPartition(...); 
    dataSource = new BoneCPDataSource(connectionPoolConfig); 
    DefaultTransactionDefinition definition = new DefaultTransactionDefinition(); 
    definition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED); 
    DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(); 
    transactionManager.setDataSource(dataSource); 

लेकिन अब मैं अपने TransactionTemplate और JdbcTemplate बनाना चाहते हैं। क्या यह कोड गारंटी देता है कि doInTransaction में किए गए सब कुछ सभी जेडीबीसी कॉल के लिए समान कनेक्शन का उपयोग करता है?

कनेक्शन किसी भी तरह से आंतरिक रूप से जुड़ा हुआ है, क्योंकि ऐसा लगता है कि जेडीबीसी टेम्पलेट और ट्रांज़ेक्शन टेम्पलेट जो भी कनेक्शन चाहता था उसका उपयोग कर सकता है। क्या मेरा कोड सही/बचा है?

उत्तर

5

यह सब ठीक होना चाहिए। महत्वपूर्ण हिस्सा यह है कि JdbcTemplate और DataSourceTransactionManager उसी DataSource ऑब्जेक्ट के साथ आपूर्ति की जाती है, जो आपने किया है।

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

आंतरिक रूप से, वसंत लगता है कि लेन-देन, कनेक्शन और datasources सब ठीक से सिंक्रनाइज़ किए जाते हैं बनाने के लिए जटिल लेनदेन तुल्यकालन तर्क का उपयोग करता है (यदि आप रुचि रखते हैं,, TransactionSynchronizationManager पर एक नजर है, हालांकि चेतावनी दी जानी है, यह डरावना है)।

जब तक आप TransactionTemplate और JdbcTemplate एपीआई के माध्यम से काम करते हैं, तो यह आपके हिस्से पर बिना किसी प्रयास के काम करेगा। यदि आप मैन्युअल रूप से DataSource से कनेक्शन लाने शुरू करते हैं, तो सभी शर्त बंद हैं।

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