[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 블록 안에서 트랜잭션 커밋과 롤백을 수행하였습니다. 이렇게 하면 데이터베이스 작업 시 예외가 발생할 경우 트랜잭션을 롤백하고 예외를 처리할 수 있습니다.