आपको सामान्य रूप से Connection.commit()
. का उपयोग करना चाहिए और नहीं Connection.setAutoCommit(true)
लेन-देन करने के लिए, जब तक कि आप लेन-देन का उपयोग करने से ऑटोकॉमिट के 'लेन-देन प्रति विवरण' मॉडल पर स्विच नहीं करना चाहते।
उस ने कहा, कॉल करना Connection.setAutoCommit(true)
जबकि लेन-देन में लेन-देन होगा (यदि ड्राइवर JDBC 4.1 युक्ति की धारा 10.1.1 का अनुपालन करता है)। लेकिन आपको वास्तव में केवल इतना ही करना चाहिए कि यदि आप उसके बाद ऑटोकॉमिट में रहना चाहते हैं, तो कनेक्शन पर ऑटोकॉमिट को सक्षम/अक्षम करने से कनेक्शन पर अधिक ओवरहेड हो सकता है (उदाहरण के लिए क्योंकि इसे लेनदेन प्रबंधकों के बीच स्विच करने की आवश्यकता है, अतिरिक्त जांच करें , आदि)।
आपको Connection.commit()
का भी इस्तेमाल करना चाहिए और मूल SQL कमांड का उपयोग न करें COMMIT
. जैसा कि कनेक्शन के दस्तावेज़ीकरण में विस्तृत है:
बात यह है कि कमांड जैसे commit()
और setAutoCommit(boolean)
बैक ग्राउंड में अधिक काम कर सकते हैं, जैसे ResultSets
. को बंद करना और Statements
को बंद या रीसेट करना . SQL कमांड का उपयोग करना COMMIT
इसे बायपास करेगा और संभावित रूप से आपके ड्राइवर / कनेक्शन को गलत स्थिति में लाएगा।