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

हाइबरनेट में मूल SQL का उपयोग करके बैच सम्मिलित करें

हाइबरनेट में बैच कार्यक्षमता होती है। लेकिन उपरोक्त मामले में मैं मूल एसक्यूएल का उपयोग कर रहा हूं, मेरे अवलोकन के अनुसार हाइबरनेट बैच मूल एसक्यूएल के मामले में ज्यादा प्रभावी नहीं है। हां, निश्चित रूप से यह स्मृति त्रुटि से बचा जाता है लेकिन ज्यादा प्रदर्शन में सुधार नहीं करता है। इसलिए मैं हाइबरनेट में JDBC बैच को लागू करने के लिए पीछे हट गया। हाइबरनेट विधि प्रदान करता है doWork() हाइबरनेट सत्र से कनेक्शन प्राप्त करने के लिए।

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
//get Connction from Session
session.doWork(new Work() {
       @Override
       public void execute(Connection conn) throws SQLException {
          PreparedStatement pstmt = null;
          try{
           String sqlInsert = "insert into sampletbl (name) values (?) ";
           pstmt = conn.prepareStatement(sqlInsert );
           int i=0;
           for(String name : list){
               pstmt .setString(1, name);
               pstmt .addBatch();

               //20 : JDBC batch size
             if ( i % 20 == 0 ) { 
                pstmt .executeBatch();
              }
              i++;
           }
           pstmt .executeBatch();
         }
         finally{
           pstmt .close();
         }                                
     }
});
tx.commit();
session.close();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ini_set, set_time_limit, (max_execution_time) - काम नहीं कर रहा

  2. बहुभाषी डेटा रखने के लिए सबसे अच्छी डेटाबेस संरचना क्या है?

  3. दो पंक्तियों के बीच समय अंतर की गणना करें

  4. मैं MySQL में पायथन में शब्दकोशों की सूची डालने के लिए एक्ज़ीक्यूटमैनी का उपयोग कैसे कर सकता हूँ?

  5. MySql:माता-पिता और बच्चे द्वारा आदेश