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

Chèn hàng loạt hoặc cập nhật với Hibernate?

Có thể có nhiều điểm nghẽn đối với hoạt động hàng loạt. Cách tiếp cận tốt nhất phụ thuộc nhiều vào dữ liệu của bạn trông như thế nào. Hãy xem Hướng dẫn ngủ đông phần xử lý hàng loạt.

Tối thiểu, hãy đảm bảo rằng bạn đang sử dụng mẫu sau (được sao chép từ sách hướng dẫn):

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

for ( int i=0; i<100000; i++ ) {
Customer customer = new Customer(.....);
session.save(customer);
    if ( i % 20 == 0 ) { //20, same as the JDBC batch size
        //flush a batch of inserts and release memory:
        session.flush();
        session.clear();
    }
}

tx.commit();
session.close();

Nếu bạn đang ánh xạ một tệp phẳng đến một biểu đồ đối tượng rất phức tạp, bạn có thể phải sáng tạo hơn, nhưng điều cơ bản chính là bạn phải tìm ra sự cân bằng giữa việc đẩy các khối dữ liệu có kích thước tốt vào cơ sở dữ liệu với mỗi lần tuôn / cam kết và tránh tăng kích thước của bộ đệm ẩn cấp phiên.

Cuối cùng, nếu bạn không cần Hibernate để xử lý bất kỳ tập hợp hoặc xếp tầng nào để dữ liệu của bạn được chèn chính xác, hãy xem xét sử dụng StatelessSession .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL vô hiệu hóa Auto-Trim

  2. Cách chọn N bản ghi cuối cùng từ một bảng trong mysql

  3. Làm cách nào để chèn các cột tại một vị trí cụ thể trong bảng hiện có?

  4. Python MySql Insert không hoạt động

  5. SQL:Lấy Sản phẩm từ một danh mục nhưng cũng phải nằm trong một nhóm danh mục khác