I'm interested in implementing this. I see a few possible approaches:
1. Add iterateXXX methods for each findXXX method. The iterateXXX methods would return an Iterator instead of a list. The iterator would load from DBCursor and deserialize object on every call to next(). Possibly you could instead return a class with implements both Iterator and Closeable, allowing the DBCursor to be closed.
2. Replace the return type List<T> of the findXXX methods with DataResult<T>. Interface DataResult would extend Iterator, Closeable and have a method asList() that would essentially do what the find method did originally, that is load the whole result into an ArrayList and return it. With this approach you don't have to add additional methods but it would break backwards compability.
What do you think?