기능
1. 대용량 데이터를 엑셀로 내려 받음.
2. 셀 머지 기능
3. 시트별로 데이터를 출력
※ xml를 사용한 방법
※ xml를 사용하지 않고 RowHandler만 사용한 방법
( 이경우는 데이터가 많은경우 Out Of Memory가 발생 하였음)
첨부파일에 컨트롤러 파일을 참고
설명
일반적으로 엑셀로 대용량 데이터를 내려 받을경우 Out Of Memory 가 발생하게 된다.
그래서 Heap Size를 늘려주기도 하고 데이터를 나눠서 엑셀로 내려받는 등 여러가지 방법으로
구현하기도 한다.
이러한 문제점들을 해결할수 있게 XML 형식으로 대용량 처리하여 엑셀로 내려 받을수 있게 되는데
스프링, iBatis(myBatis), poi등을 이용하여 구현하게 된다.
일반적으로 엑셀 내려받기 위하여 10만건을 내려받는다고 하면 DTO에 모든 데이터를 담아서
엑셀을 생성하게되는데(heap size 작거나 할 경우 Out Of Memory 발생) 이와 달리 상기 언급한 대
용량 처리 엑셀다운로드는 RowHandler를 이용하여 10만건이면 한 row씩 데이터를 가지고와 xml파
일로 만들어주고 그 파일을 가지고 압축하여 엑셀(xlsx)파일로 만들어주는 방법이다. 그러기때문에
서버에 부하를 최대 한 줄 일 수 있다.
로컬에서 Heap Size 1기가로 설정하고 테스트해본결과 최대 백만건 좀 넘게 내려 받을수 있었음.
그이상은 데이터는 엑셀이 로우를 생성하지 못하는 것 처럼 보였음.
728x90
반응형
'Language > Java' 카테고리의 다른 글
java 천단위 콤마 출력 (0) | 2018.02.04 |
---|---|
des 암복호화 (0) | 2018.01.15 |
첨부파일 byte를 받아 [bytes, KB, MB, GB, TB, PB] 으로 변환 (0) | 2018.01.13 |
자바 숫자 체크 (0) | 2018.01.13 |
Math.random() 취약점 대체 (0) | 2018.01.13 |