[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 코드에서는 SqlSession
의 insert
메서드를 사용하여 배치 작업을 수행하고, commit
메서드를 호출하여 트랜잭션을 커밋합니다.
배치 처리를 사용하면 여러 개의 데이터를 한 번에 데이터베이스에 삽입하거나 업데이트할 수 있습니다. MyBatis의 foreach
태그를 사용하여 쿼리를 동적으로 생성하면서 배치 처리를 구현할 수 있습니다.