2016-02-16 10 views
5

Here बैच सम्मिलन प्रदर्शन को गति देने का एक तरीका है। क्या rewriteBatchedStatements प्रोग्रामेटिक रूप से सेट किया जा सकता है, यूआरएल के माध्यम से नहीं?mysql jdbc ड्राइवर के लिए प्रोग्रामेटिक रूप से फिर से लिखना कैसे सेट किया गया है?

+0

मेरा एसओ में यह मौजूदा प्रश्न आपकी मदद करेगा। http://stackoverflow.com/questions/26307760/mysql-and-jdbc-with-rewritebatchedstatements-true –

उत्तर

2

आप यूआरएल के माध्यम से यह करने के लिए नहीं करना चाहते हैं, तो आप DriverManager साथ Properties वस्तु का उपयोग कर सकते यदि आप MysqlDataSource या MysqlConnectionPoolDataSource का उपयोग करते हैं तो आपको संपत्ति rewriteBatchedStatements (या कॉल सेटर setRewriteBatchedStatements(boolean)

सेट करने की आवश्यकता है

रनटाइम पर इसे बदलने के लिए के बाद आप एक कनेक्शन प्राप्त किया है, तो आप का उपयोग करने के लिए सक्षम होना चाहिए:

((com.mysql.jdbc.ConnectionProperties) connection).setRewriteBatchedStatements(true); 

नोट: मैं केवल यह आखिरी विकल्प के लिए MySQL कनेक्टर/जम्मू सूत्रों पर ध्यान दिया है, मुझे नहीं है इसका परीक्षण किया

UPDATED c3p0 आप निम्नलिखित का उपयोग कर सकते के लिए:

ComboPooledDataSource cpds = ... 
Connection connection = cpds.getConnection(); 
connection.unwrap(com.mysql.jdbc.ConnectionProperties.class).setRewriteBatchedStatements(true); 

c3p0 com.mchange:c3p0:0.9.5.2 होना चाहिए, com.mchange साथ सावधान होना - अन्य ग्रुप के साथ इस कोड काम नहीं करता।

+0

@ चेरी संपादन के लिए धन्यवाद। मैं पूरी तरह से 'अनचाहे' का उल्लेख करना भूल गया, यह संभवतः सामान्य MySQL कनेक्शन के लिए काम करेगा, और अन्य डेटा स्रोतों के लिपटे MySQL कनेक्शन के लिए भी काम करेगा। –

0

आप Connection.setClientInfo का उपयोग कर यह करने के लिए सक्षम होना चाहिए:

Properties props = new Properties(); 
props.setProperty("user", ...); 
props.setProperty("password", ...); 
props.setProperty("rewriteBatchedStatements", "true"); 
Connection connection = DriverManager.getConnection(url, props); 

:

Connection c = ...; 
c.setClientInfo("rewriteBatchedStatements", "true"); 
+0

क्या आप यह सुनिश्चित करने के लिए जानते हैं कि यह काम करता है? मैंने बस MySQL कनेक्टर/जे स्रोतकोड पर एक त्वरित नज़र डाली, लेकिन setClientInfo केवल मौजूदा कनेक्शन के बारे में सर्वर साइड जानकारी सेट करने लगता है। –

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