대용량 검색 방법 Mybatis ResultHander

2015.01.29 14:35JAVA

페이지를 한번에 많은 내용을 검색해 와야 한다.

그냥 selectList 로 불러와 버리면 당연히 VM 에서 Out Of Memory가 발생된다.

게시판 형태라면야  row number을 이용하거나 다른 방법을 이용 해서 페이징 기법을 사용 하면 되는데


대용량의 데이터를  DB로 부터  읽어와서 처리를 해야 한다면 어떻게 해야 할까?

mybatis 를 사용 하면 resultHander를 상속받아 사용 할 수 있다.

( https://code.google.com/p/mybatis/wiki/ResultHandlerExample )


핸들러를 사용하면 데이터를 한건씩 읽어와  데이터를 처리 할 수 있다. 

SfAbstractReportCommonDao.java

ResultHandler 파라미터는 레코드별로 다룰수 있도록 해준다. List 에 추가할수도 있고, Map, Set 을 만들수도 있으며, 각각의 결과를 그냥 던질수도 있다. ResultHandler 로 많은 것을 할 수 있고 MyBatis 는 결과셋을 다루기 위해 내부적으로 사용한다.


인터페이스는 매우 간단하다.



한가지 방법이 더 있는데, 이건 페이징 처리를 하듯이 101건씩 혹은 1001한건씩 데이터를 가져와서 

처리를 하는 방법 이다.

SfAbstractReportCommonDao.java

SfReportDao.xml




'JAVA' 카테고리의 다른 글

Java Cache (LRU Cache) LinkedHachMap  (0) 2015.12.10
java proxy , reflect  (0) 2015.04.20
대용량 검색 방법 Mybatis ResultHander  (2) 2015.01.29
JAVA custom listener  (0) 2015.01.15
search Engine - sphinx  (0) 2013.05.21
Apache HttpClient - Rest call Client  (0) 2013.05.03
  • 프로필사진
    12015.04.29 16:16

    샘플 소스에서는.. 핸들러에서 리스트 객체를 만들어 조회 해온 데이터를 추가하는데.. 똑같이 OOM이 발생할텐데.. resultHandler를 사용하는 의미가 없지 않나요?