[Mybatis] 배치 처리 개념과 예제

배치 처리는 여러 개의 데이터를 한 번에 처리하는 방식을 말합니다. 데이터베이스 작업에는 개별적인 쿼리를 여러 번 실행하는 것보다 배치 처리를 사용하는 것이 효율적일 수 있습니다. MyBatis는 이러한 배치 처리를 지원하며, SqlSession을 사용하여 배치 작업을 수행할 수 있습니다. 아래는 배치 처리의 개념과 예제입니다.

예제: 배치 처리

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.util.ArrayList;
import java.util.List;

public class BatchProcessingExample {

    public static void main(String[] args) {
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
                .build(BatchProcessingExample.class.getResourceAsStream("/mybatis-config.xml"));

        try (SqlSession sqlSession = sessionFactory.openSession()) {
            // 배치 처리할 데이터를 리스트에 추가
            List<Book> books = new ArrayList<>();
            books.add(new Book("Book A", "Author A"));
            books.add(new Book("Book B", "Author B"));
            books.add(new Book("Book C", "Author C"));

            // 배치 처리 실행
            sqlSession.insert("insertBatchBooks", books);

            // 커밋
            sqlSession.commit();
        }
    }
}` 

매퍼 XML 파일:

BookMapper.xml:

<!-- 배치 처리를 위한 쿼리 -->
<insert id="insertBatchBooks" parameterType="java.util.List">
  INSERT INTO books (title, author) VALUES
  <foreach collection="list" item="book" separator=",">
    (#{book.title}, #{book.author})
  </foreach>
</insert>` 

위의 예제에서는 insertBatchBooks라는 배치 처리를 위한 쿼리를 정의하였습니다. Java 코드에서는 SqlSessioninsert 메서드를 사용하여 배치 작업을 수행하고, commit 메서드를 호출하여 트랜잭션을 커밋합니다.

배치 처리를 사용하면 여러 개의 데이터를 한 번에 데이터베이스에 삽입하거나 업데이트할 수 있습니다. MyBatis의 foreach 태그를 사용하여 쿼리를 동적으로 생성하면서 배치 처리를 구현할 수 있습니다.