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 .