[Mybatis] 대량의 데이터를 한 번에 데이터베이스에 적재 하기 위한 응용 프로그램 배치(Batch Execution) 예제

대량의 데이터를 한 번에 데이터베이스에 적재하는 것을 배치 처리(Batch Processing)라고 합니다. MyBatis를 사용하여 배치 처리를 수행하는 예제를 제공합니다. 아래 예제에서는 User 객체를 대량으로 삽입하는 방법을 보여줍니다.

예제: 배치 처리로 데이터 삽입

  1. 매퍼 인터페이스 작성: 데이터를 삽입할 매퍼 인터페이스를 작성합니다.
public interface UserMapper {
    void insertUser(User user);
}` 
  1. 매퍼 XML 파일 작성: 데이터를 삽입할 매퍼 XML 파일을 작성합니다.
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
    <insert id="insertUser">
        INSERT INTO users (user_id, user_name, email)
        VALUES (#{userId}, #{userName}, #{email})
    </insert>
</mapper>` 
  1. 배치 처리 메서드 작성: 배치 처리를 위한 메서드를 작성합니다. 이 예제에서는 1000개의 User 객체를 한 번에 데이터베이스에 삽입합니다.
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);
            
            List<User> userList = generateUserList(); // User 객체 목록 생성
            
            // 배치 처리 시작
            for (User user : userList) {
                userMapper.insertUser(user);
            }
            
            sqlSession.commit(); // 배치 처리 완료 후 커밋
        }
    }

    private static List<User> generateUserList() {
        List<User> userList = new ArrayList<>();
        for (int i = 1; i <= 1000; i++) {
            User user = new User();
            user.setUserId(i);
            user.setUserName("User " + i);
            user.setEmail("user" + i + "@example.com");
            userList.add(user);
        }
        return userList;
    }
}` 

위의 예제에서는 generateUserList 메서드를 사용하여 1000개의 User 객체를 생성한 후, 이를 배치 처리하여 데이터베이스에 삽입합니다. 배치 처리는 여러 개의 쿼리를 한 번에 실행하여 성능을 향상시키는 데 유용합니다.

데이터 삽입 외에도 업데이트 또는 삭제 작업에도 배치 처리를 적용할 수 있습니다. MyBatis를 사용하면 데이터베이스 배치 처리를 간편하게 구현할 수 있습니다.