[Mybatis] SqlSession 내에서 트랜잭션을 시작하고 커밋 또는 롤백을 수행 예제

MyBatis에서 SqlSession을 사용하여 트랜잭션을 시작하고 커밋 또는 롤백을 수행하는 예제를 아래에 제시합니다.

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

public class TransactionExample {

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

        try (SqlSession sqlSession = sessionFactory.openSession()) {
            // 트랜잭션 시작
            sqlSession.getConnection().setAutoCommit(false);

            // 데이터 변경 작업 수행 (INSERT, UPDATE, DELETE 등)

            // 커밋
            sqlSession.commit();
        } catch (Exception e) {
            // 롤백
            sqlSession.rollback();
            e.printStackTrace();
        }
    }
}` 

위의 예제에서는 SqlSession을 사용하여 트랜잭션을 시작하고, 트랜잭션 내에서 데이터 변경 작업을 수행하고 있습니다. setAutoCommit(false)를 호출하여 자동 커밋을 비활성화하고, 변경 작업을 수행한 뒤에 commit 메서드를 호출하여 트랜잭션을 커밋합니다. 만약 예외가 발생한다면 rollback 메서드를 호출하여 롤백을 수행합니다.

효율적인 트랜잭션 관리를 위해 try-catch 블록 안에서 트랜잭션 커밋과 롤백을 수행하였습니다. 이렇게 하면 데이터베이스 작업 시 예외가 발생할 경우 트랜잭션을 롤백하고 예외를 처리할 수 있습니다.