2012-03-05 3 views
1

xml에 삽입 될 것으로 예상되는 엄청난 양의 데이터가 있습니다. jaxb.xml.bind.Marshaller를 사용하기로 결정했습니다.Spring-Hibernate JAXB xml bind로 페이징 된 마샬링하는 방법

거대한 데이터로 인해 데이터베이스에서 페이지 매김을 통해 해당 데이터를 선택해야합니다.

예를 들어, db에서 각 프로세스 당 10.000 개의 행을 가져와 즉시 XML에 쓰고,이 프로세스는 3 백만 행이 기록 될 때까지 계속됩니다.

가장 중요한 제약은 하나의 XML 파일 만 사용해야한다는 것입니다. 즉,이 거대한 데이터를 하나의 XML 파일로 마샬링해야합니다. 따라서 하나의 XML로 마샬링 가능한 데이터가 있는지 알고 싶습니다. 그런 다음 동일한 XML bu를 다시 마샬링하여 다시 사용하고 업데이트하십시오.

고마워요.

답변

1

실제로는 한 번에 할 수 있지만 덜 편리한 프레임 워크로 수행 할 수 있습니다. 먼저 원시 JDBC (예 : JdbcTemplate, 메소드는 RowCallbackHandler입니다.) 전체 테이블 (3 백만 행)을 거대한 컬렉션으로 매핑하는 대신 결과를 반복합니다 (예 : ResultSet 사용). 이렇게하면 페이지가 매겨진 여러 개의 쿼리를 피할 수 있고 메모리 풋 프린트를 최소화 할 수 있습니다 (한 번에 10000 개의 행을 가져 오는 것보다 훨씬 작음).

큰 XML 파일을 출력하는 것이 더 큰 문제입니다. 은 출력용으로 사용할 수 없으며 은 큰 파일에는 적합하지 않습니다. 가장 좋은 방법은 PrintWriter을 사용하여 XML을 직접 인쇄하는 것입니다.

관련 문제