Spring-Hibernate Как сделать постраничный маршал с помощью JAXB xml bind - PullRequest
1 голос
/ 05 марта 2012

Существует действительно огромный набор данных, который предполагается вставить в XML.Я решил использовать jaxb.xml.bind.Marshaller.

Из-за этих огромных данных я должен выбрать эти данные из базы данных по нумерации страниц.

Я имею в виду, например, что мне нужно получить 10.000 строк на каждый процесс из db и немедленно записать в xml, и этот процесс продолжается до тех пор, пока не будет записано 3 миллиона строк.

Самое важное ограничение - я должен использовать только один XML-файл.Другими словами, я должен собрать эти огромные данные только в один XML-файл.Поэтому я хотел бы знать, возможно ли упорядочить данные в один xml, а затем повторно использовать и обновить тот же самый xml bu marshalling снова.

Большое спасибо.

1 Ответ

1 голос
/ 05 марта 2012

Вы можете сделать это за один раз, но с менее удобными фреймворками.Прежде всего, перейдите к необработанному JDBC (вероятно, с JdbcTemplate, см. Методы, принимающие RowCallbackHandler) и вместо отображения всей таблицы (3 миллиона строк) в огромную коллекцию,перебрать результат (например, используя ResultSet).Таким образом, вы можете избежать нескольких разбитых на страницы запросов и иметь минимальный объем памяти (даже меньший по сравнению с извлечением 10000 строк за раз).

Вывод такого большого XML-файла - большая проблема. нельзя использовать для вывода, а не подходит для таких больших файлов.Я думаю, что лучший подход - это напечатать XML напрямую, используя PrintWriter ...

...