Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

कोई बात नहीं, मैं हाइबरनेट में MySQL INSERT स्टेटमेंट को बैच नहीं कर सकता

यह संभव है कि आपके प्रश्नों को फिर से लिखा जा रहा हो, लेकिन हाइबरनेट एसक्यूएल लॉग को देखकर आपको पता नहीं चलेगा। हाइबरनेट इन्सर्ट स्टेटमेंट को फिर से नहीं लिखता - MySQL ड्राइवर उन्हें फिर से लिखता है। दूसरे शब्दों में, हाइबरनेट ड्राइवर को कई इंसर्ट स्टेटमेंट भेजेगा, और फिर ड्राइवर उन्हें फिर से लिखेगा। तो हाइबरनेट लॉग केवल आपको दिखाते हैं कि SQL हाइबरनेट ने ड्राइवर को क्या भेजा, न कि ड्राइवर ने डेटाबेस को कौन सा SQL भेजा।

आप कनेक्शन url में MySQL के profileSQL पैरामीटर को सक्षम करके इसे सत्यापित कर सकते हैं:

<b:property name="jdbcUrl" value="jdbc:mysql://server:3306/db?autoReconnect=true&amp;rewriteBatchedStatements=true&amp;profileSQL=true" />

आपके जैसे उदाहरण का उपयोग करते हुए, मेरा आउटपुट इस तरह दिखता है:

insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
Wed Feb 05 13:29:52 MST 2014 INFO: Profiler Event: [QUERY]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) duration: 1 ms, connection-id: 81, statement-id: 33, resultset-id: 0, message: insert into Person (firstName, lastName, id) values ('person1', 'Name', 1),('person2', 'Name', 2),('person3', 'Name', 3),('person4', 'Name', 4),('person5', 'Name', 5),('person6', 'Name', 6),('person7', 'Name', 7),('person8', 'Name', 8),('person9', 'Name', 9),('person10', 'Name', 10)

हाइबरनेट द्वारा पहली 10 पंक्तियों को लॉग किया जा रहा है, हालांकि यह वास्तव में MySQL डेटाबेस को नहीं भेजा जा रहा है। अंतिम पंक्ति MySQL ड्राइवर से आ रही है और यह स्पष्ट रूप से कई मानों के साथ एकल बैच इंसर्ट दिखाता है और यही वास्तव में MySQL डेटाबेस को भेजा जा रहा है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JTable के एकल कॉलम पर MySQL डेटाबेस से छवियों को प्रदर्शित करना

  2. MySQL उच्चतम मूल्य से DISTINCT का चयन करें

  3. मैक ओएसएक्स पर मैसकल 5.6 सिरदर्द

  4. डुप्लीकेट कुंजी अद्यतन के साथ MySQL लोड डेटा इनफाइल

  5. MySql सेलेक्ट फॉर्मेट, राउंड कॉलम