[Mybatis] 대량의 데이터를 한 번에 데이터베이스에 적재 하기 위한 응용 프로그램 배치(Batch Execution) 예제
대량의 데이터를 한 번에 데이터베이스에 적재하는 것을 배치 처리(Batch Processing)라고 합니다. MyBatis를 사용하여 배치 처리를 수행하는 예제를 제공합니다. 아래 예제에서는 User
객체를 대량으로 삽입하는 방법을 보여줍니다.
예제: 배치 처리로 데이터 삽입
- 매퍼 인터페이스 작성: 데이터를 삽입할 매퍼 인터페이스를 작성합니다.
public interface UserMapper {
void insertUser(User user);
}`
- 매퍼 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>`
- 배치 처리 메서드 작성: 배치 처리를 위한 메서드를 작성합니다. 이 예제에서는 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를 사용하면 데이터베이스 배치 처리를 간편하게 구현할 수 있습니다.