[Mybatis] 반복자(Iterators) 예제
MyBatis에서는 결과셋을 반복하는 데 사용할 수 있는 반복자(Iterators)를 제공합니다. 반복자는 한 번에 모든 결과를 가져오는 대신에 필요한 만큼의 결과만 메모리에 로드하여 처리할 수 있게 해줍니다. 이를 통해 메모리 사용량을 최적화하고 대량의 데이터를 효율적으로 처리할 수 있습니다.
예제: 반복자 사용
- 매퍼 XML 파일 작성
<select id="selectAllBooks" resultType="Book">
SELECT * FROM books
</select>`
- 애플리케이션에서 반복자 사용
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.Iterator;
public class IteratorExample {
public static void main(String[] args) {
InputStream inputStream = IteratorExample.class.getResourceAsStream("/mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession sqlSession = sessionFactory.openSession()) {
Iterator<Book> bookIterator = sqlSession.selectList("selectAllBooks").iterator();
while (bookIterator.hasNext()) {
Book book = bookIterator.next();
System.out.println("Book: " + book.getTitle());
}
}
}
}`
위의 예제에서 selectAllBooks
쿼리를 실행하여 모든 책의 목록을 가져오고, 이를 반복자로 순회하면서 출력합니다. 이렇게 하면 한 번에 모든 결과를 가져오는 것이 아니라 필요한 만큼의 결과를 메모리에 로드하여 처리할 수 있습니다. 이는 대량의 데이터를 다룰 때 메모리 효율성을 높여줍니다.