[Mybatis] 결과 스트림 처리 예제
MyBatis에서 결과 스트림(Stream) 처리를 사용하면 대량의 데이터를 효율적으로 조회하고 처리할 수 있습니다. 결과 스트림은 결과 집합이 큰 경우 메모리 사용을 최소화하고 데이터를 한 번에 모두 로드하지 않도록 합니다. 아래는 결과 스트림 처리 예제입니다.
예제: 결과 스트림 처리
- 매퍼 인터페이스 작성:
매퍼 인터페이스에 결과 스트림 처리 메서드를 작성합니다.
public interface UserMapper {
Stream<User> getAllUsersAsStream();
}`
- 매퍼 XML 파일 작성:
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
<select id="getAllUsersAsStream" resultType="User">
SELECT * FROM users
</select>
</mapper>`
- 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>
을 사용하여 모든 사용자를 조회하고, 결과를 스트림으로 받아서 각 사용자를 출력합니다. 결과가 큰 경우에도 메모리에 모든 데이터를 로드하지 않고 스트림을 통해 한 번에 하나씩 처리할 수 있습니다.
결과 스트림을 사용하면 대용량 데이터베이스에서 효율적으로 데이터를 처리할 수 있으며, 메모리 부하를 줄일 수 있습니다.