Java

Transaction 과 예외 처리의 관계

제주니어 2024. 6. 11. 08:54

 

 

지난번에 이어 exception 처리와 transaction 의 관계에 대해서 

한번 더 꼬집어 보고자 글을 나누어 작성하게 되었다. 

 

 

 

예외 처리와 트랜잭션 롤백

 


트랜잭션 관리에서도 예외 처리는 매우 중요하다.

트랜잭션은 데이터베이스 작업의 논리적 단위로, 모든 작업이 성공적으로 완료되거나 모두 롤백되어야 한다.

예외가 발생하면 트랜잭션을 롤백하여 데이터의 일관성을 유지해야 합니다.



정상 트랜잭션: 모든 작업이 성공적으로 완료되면 commit을 수행한다.
예외 발생 트랜잭션: 작업 도중 예외가 발생하면 rollback을 수행하여 이전 상태로 되돌린다.

 

public void processTransaction() {
    Connection conn = null;
    try {
        conn = dataSource.getConnection();
        conn.setAutoCommit(false);

        // 데이터베이스 작업 수행
        performDatabaseOperations(conn);

        conn.commit();
    } catch (SQLException e) {
        if (conn != null) {
            try {
                conn.rollback();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
        e.printStackTrace();
    } finally {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

 

위 예제에서는 데이터베이스 작업 도중 SQLException이 발생하면 

트랜잭션을 롤백하여 데이터의 일관성을 유지하도록 한다.

 

 

그렇담 정상 트랜잭션은 무엇이고, 
예외 발생 트랜잭션은 무엇인가.

 

 

 

정상 트랜잭션이란 단어를 보고 checked exception 만 해당이 되는구나 라고 생각했다. 

하지만 checked exception 과 unchecked exception 모두 해당 할 수 있다는 것을 알게 되었다.