साथ पूलिंग मैं एक जावा आवेदन (इस में कोई कंटेनर द्वारा प्रदत्त डेटा स्रोत) में कनेक्शन पूलिंग सक्षम करने के लिए Apache Commons DBCP उपयोग करना चाहते हैं। वेब Apache site सहित के कई साइटों में - पुस्तकालय के उपयोग के इस स्निपेट में आधारित है:कनेक्शन अपाचे DBCP
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
ds.setUsername("scott");
ds.setPassword("tiger");
ds.setUrl(connectURI);
तो फिर तुम विधि getConnection() के माध्यम से अपने DB कनेक्शन मिलता है। लेकिन अन्य साइटों पर Apache Site also -और - डेटा स्रोत उदाहरण इस के माध्यम से किया जाता है:
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,null);
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory);
ObjectPool objectPool = new GenericObjectPool(poolableConnectionFactory);
PoolingDataSource dataSource = new PoolingDataSource(objectPool);
उन दोनों के बीच क्या अंतर है? मैं कनेक्शन पूलिंग का उपयोग कर रहा BasicDataSource
साथ, या मैं PoolingDataSource
का एक उदाहरण की जरूरत कनेक्शन पूलिंग के साथ काम करने? BasicDataSource
थ्रेड-सुरक्षित है (क्या मैं इसे क्लास एट्रिब्यूट के रूप में उपयोग कर सकता हूं) या मुझे इसकी पहुंच सिंक्रनाइज़ करने की आवश्यकता है?
क्या आप मतलब है से बनाया जाता है "उचित एक्सेसर्स" के साथ? सिंक्रनाइज़ ब्लॉक? –
BasicDataSource थ्रेड-सुरक्षित है, क्योंकि सभी चर सिंक्रनाइज़ के माध्यम से पढ़े/लिखे जाते हैं। तो, मुझे नहीं लगता कि आपको सिंक्रनाइज़ ब्लॉक का उपयोग करने की आवश्यकता है। यदि आप इस कक्षा को विस्तारित कर रहे हैं तो आपको केवल थ्रेड-सुरक्षा सुनिश्चित करने के लिए सुरक्षित फ़ील्ड तक पहुंचने के बजाय उपयुक्त एक्सेसर्स का उपयोग करने की देखभाल करनी चाहिए, लेकिन आपको सिंक्रनाइज़ ब्लॉक का उपयोग करने की आवश्यकता नहीं है। – ivi