Моя цель - фактически сбросить все данные базы данных в файл XML. База данных не очень большая, ее около 300 МБ. Проблема в том, что у меня ограничено ограничение памяти на 256 МБ (только в JVM). Поэтому, очевидно, я не могу просто прочитать все в памяти.
Мне удалось решить эту проблему с помощью iBatis (да, я имею в виду iBatis, а не myBatis), называя его getList(... int skip, int max)
несколько раз, с приращением skip
. Это решает мою проблему с памятью, но меня не впечатляет скорость. Имена переменных указывают на то, что метод, находящийся под капотом, состоит в том, чтобы прочитать весь набор результатов, пропустив указанную запись. Это звучит довольно излишне для меня (я не говорю, что метод делает, я просто догадываюсь о базе имени переменной).
Теперь я перешел на myBatis 3 для следующей версии моего приложения. Мой вопрос: есть ли лучший способ обработать большой объем данных куском в myBatis? В любом случае, чтобы myBatis обрабатывал первые N записей, возвращайте их вызывающему, сохраняя соединение с набором результатов открытым, поэтому в следующий раз, когда пользователь вызывает getList (...), он начнет чтение из записи N + 1, не делая никаких "пропуск"?