Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chèn hàng loạt bằng SQL gốc ở chế độ Hibernate

Hibernate có chức năng Batch.Nhưng trong trường hợp trên, tôi đang sử dụng Native SQL, theo quan sát của tôi, loạt hibernate không hiệu quả trong trường hợp Native SQL. Có, chắc chắn nó tránh được lỗi hết bộ nhớ nhưng không cải thiện nhiều hiệu suất. Tôi đã rút lui để triển khai JDBC Batch trong Hibernate. Hibernate cung cấp phương thức doWork() để có được Kết nối từ Phiên ngủ đông.

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. Tại sao kết nối MySQL bị chặn do nhiều lỗi kết nối?

  2. Làm cách nào để quay lại lệnh xóa cuối cùng của tôi trong MySQL?

  3. Lập chỉ mục các trường boolean

  4. Sao chép giá trị từ cột này sang cột khác trong cùng một bảng

  5. Ví dụ về CURRENT_TIMESTAMP - MySQL