आपको प्रति कार्य एक कनेक्शन का उपयोग करना चाहिए। यदि आप कनेक्शन पूलिंग का उपयोग करते हैं तो आप किसी अन्य कनेक्शन द्वारा तैयार तैयार बयान का उपयोग नहीं कर सकते हैं। कनेक्शन द्वारा बनाए गए सभी ऑब्जेक्ट्स (ResultSet, PreparedStatements) पूल में कनेक्शन के बाद उपयोग के लिए अमान्य हैं।
इसलिए, यह इस मामले आपके सभी डीएओ वस्तुओं कनेक्शन नहीं ले में एक जैसे है
public void getSomeData() {
Connection conn = datasource.getConnection();
PreparedStatement st;
try {
st = conn.prepareStatement(...);
st.execute();
} finally {
close(st);
close(conn);
}
}
तो, लेकिन डेटा स्रोत ऑब्जेक्ट (java.sql.DataSource) जो वास्तव में poolable कनेक्शन कारखाना है। और प्रत्येक विधि में आप सबसे पहले कनेक्शन प्राप्त करते हैं, अपने सभी काम और घनिष्ठ कनेक्शन करें। आपको जितनी जल्दी हो सके पूल से कनेक्शन वापस करना चाहिए। कनेक्शन लौटने के बाद यह शारीरिक रूप से बंद नहीं हो सकता है, लेकिन फिर से शुरू किया गया (सभी सक्रिय लेनदेन बंद हो गए, सभी सत्र चर नष्ट हो गए आदि)
स्रोत
2009-07-25 15:05:50