[java] 자바에서 데이터베이스에 트랜잭션 처리하기

자바 애플리케이션에서 데이터베이스 트랜잭션을 처리하는 것은 매우 중요합니다. 트랜잭션은 여러 가지 데이터베이스 작업을 묶어서 한꺼번에 수행하는데 사용됩니다. 이번에는 자바에서 데이터베이스 트랜잭션을 처리하는 방법에 대해 살펴보겠습니다.

JDBC를 사용한 트랜잭션 처리

자바에서 데이터베이스에 액세스하기 위해 가장 일반적으로 사용하는 기술은 Java Database Connectivity (JDBC)입니다. JDBC를 사용하여 트랜잭션을 다루는 방법은 다음과 같습니다.

Connection conn = null;
try {
    // 데이터베이스 연결
    conn = DriverManager.getConnection(url, username, password);
    // 트랜잭션 시작
    conn.setAutoCommit(false);
    // 여러 데이터베이스 작업 실행
    // ...
    // 트랜잭션 커밋
    conn.commit();
} catch (SQLException e) {
    // 에러 발생 시 롤백
    if (conn != null) {
        conn.rollback();
    }
} finally {
    if (conn != null) {
        conn.close();
    }
}

위 코드에서는 Connection 객체를 사용하여 데이터베이스에 연결하고, setAutoCommit(false)를 호출하여 자동 커밋을 비활성화합니다. 그 후 여러 데이터베이스 작업을 실행한 뒤, 문제가 발생하지 않았을 경우 commit()을 호출하여 트랜잭션을 완료합니다. 에러가 발생하면 rollback()을 호출하여 트랜잭션을 롤백합니다.

Spring 프레임워크를 사용한 트랜잭션 처리

Spring 프레임워크를 사용하면 훨씬 간편하게 트랜잭션을 관리할 수 있습니다. Spring의 @Transactional 어노테이션을 사용하여 트랜잭션을 선언적으로 처리할 수 있습니다.

@Service
@Transactional
public class MyService {
    @Autowired
    private MyRepository repository;

    public void myBusinessMethod() {
        // 여러 데이터베이스 작업 실행
        // repository.doSomething();
    }
}

위의 예시에서는 @Transactional 어노테이션을 사용하여 MyService 클래스의 myBusinessMethod 메서드를 트랜잭션으로 묶었습니다. Spring은 @Transactional 어노테이션이 붙은 메서드를 실행할 때 자동으로 트랜잭션을 시작하고, 메서드 실행 후에 자동으로 커밋 또는 롤백을 수행합니다.

마치며

이상으로 자바에서 데이터베이스 트랜잭션을 처리하는 방법에 대해 알아보았습니다. JDBC를 사용한 수동적인 트랜잭션 관리부터 Spring 프레임워크를 활용한 선언적인 트랜잭션 관리까지 다양한 방법이 있으니, 상황에 맞게 적절한 방법을 선택하여 사용할 수 있습니다.

관련 참고 자료: