[Mybatis] 결과 스트림 처리 예제

MyBatis에서 결과 스트림(Stream) 처리를 사용하면 대량의 데이터를 효율적으로 조회하고 처리할 수 있습니다. 결과 스트림은 결과 집합이 큰 경우 메모리 사용을 최소화하고 데이터를 한 번에 모두 로드하지 않도록 합니다. 아래는 결과 스트림 처리 예제입니다.

예제: 결과 스트림 처리

  1. 매퍼 인터페이스 작성:

매퍼 인터페이스에 결과 스트림 처리 메서드를 작성합니다.

public interface UserMapper {
    Stream<User> getAllUsersAsStream();
}` 
  1. 매퍼 XML 파일 작성:
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
    <select id="getAllUsersAsStream" resultType="User">
        SELECT * FROM users
    </select>
</mapper>` 
  1. Java 코드에서 호출:
public class Main {

    public static void main(String[] args) {
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        try (SqlSession sqlSession = sessionFactory.openSession()) {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            
            // 결과 스트림을 사용하여 모든 사용자 조회
            try (Stream<User> userStream = userMapper.getAllUsersAsStream()) {
                userStream.forEach(user -> System.out.println("User: " + user));
            }
        }
    }
}` 

위의 예제에서는 Stream<User>을 사용하여 모든 사용자를 조회하고, 결과를 스트림으로 받아서 각 사용자를 출력합니다. 결과가 큰 경우에도 메모리에 모든 데이터를 로드하지 않고 스트림을 통해 한 번에 하나씩 처리할 수 있습니다.

결과 스트림을 사용하면 대용량 데이터베이스에서 효율적으로 데이터를 처리할 수 있으며, 메모리 부하를 줄일 수 있습니다.