Khi sử dụng một trong các phương thức mẫu JDBC khác nhau, tôi bị nhầm lẫn về cách lặp/cuộn qua tập kết quả lớn (không phù hợp với bộ nhớ). Ngay cả khi không có một tiếp xúc trực tiếp của một giao diện Iterable tôi ít nhất sẽ mong đợi trường hợp của RowCallbackHandler để có được gọi là trong khi truy vấn được thực hiện không sau khi nó kết thúc (hoặc overfloats đống).Hỗ trợ Spring JDBC và tập dữ liệu lớn
Tôi đã xem qua số this (không thay đổi gì đối với tôi mặc dù tương tự về tinh thần với this post khi tràn ngăn xếp) và tại this đăng trong diễn đàn mùa xuân. Sau này dường như gợi ý rằng trình xử lý gọi lại thực sự nên được gọi trong khi con trỏ đang tìm nạp dữ liệu. Tuy nhiên, các thử nghiệm của tôi cho thấy không có hành vi như vậy.
Cơ sở dữ liệu là một Oracle10g. Tôi đang sử dụng trình điều khiển sản xuất 11.1.0.7.0 và Spring 2.5.6.SEC01. Bất kỳ ý tưởng bất cứ ai làm thế nào để lặp qua bộ kết quả, tốt nhất là trong khi giữ logic lập bản đồ của RowMapper vv?
setFetchSize không thay đổi mọi thứ đối với tôi, tôi đã thử sử dụng nó trước đây. Bạn có phát triển chống lại một cá thể Oracle không? Đối với tôi RowCallBackHandler chỉ bị treo, chờ truy vấn kết thúc như tôi đã viết trong OP của tôi. – yawn
Rõ ràng tôi đã quên cuộc gọi afterPropertiesSet() trên mẫu JDBC trong bài kiểm tra của tôi. Xấu hổ, nhưng bây giờ nó hoạt động: *) – yawn