트랜잭션은  더 이상 쪼갤 수 없는 업무 처리의 최소 단위이다.

 

 A라는 사람이 B라는 사람있는데 1,000원을 지급하고 B가 그 돈을 받은 경우, 이 거래 기록은 더 이상 작게 쪼갤 수가 없는 하나의 트랜잭션을 구성한다. 만약 A는 돈을 지불했으나 B는 돈을 받지 못했다면 그 거래는 성립되지 않는다. 이처럼 A가 돈을 지불하는 행위와 B가 돈을 받는 행위는 별개로 분리될 수 없으며 하나의 거래내역으로 처리되어야 하는 단일 거래이다. 이런 거래의 최소 단위를 트랜잭션이라고 한다. 트랜잭션 처리가 정상적으로 완료된 경우 커밋(commit)을 하고, 오류가 발생할 경우 원래 상태대로 롤백(rollback)을 한다.

트랜잭션은 데이터베이스에서 데이터의 일관성과 무결성을 보장하기 위해 사용된다.

 

트랜잭션은 일반적으로 다음과 같은 4가지 속성을 가진다.

 

원자성(Atomicity): 트랜잭션의 모든 작업이 완전히 수행되거나, 아니면 전혀 수행되지 않아야 한다. 즉, 트랜잭션 내의 작업 중 어느 하나라도 실패하면 전체 작업이 롤백되어야 한다.

 

일관성(Consistency): 트랜잭션 수행 전과 수행 후의 데이터베이스 상태가 일관되어야 한다. 즉, 트랜잭션 수행 후에도 데이터베이스의 제약 조건이 유지되어야 한다.

 

격리성(Isolation): 여러 개의 트랜잭션이 동시에 수행되더라도, 각각의 트랜잭션은 독립적으로 수행되는 것처럼 보여야 한다. 즉, 다른 트랜잭션에서 수행하는 작업에 대해 영향을 받지 않아야 한다.

 

지속성(Durability): 트랜잭션이 성공적으로 완료된 후에는, 해당 작업의 결과가 영구적으로 데이터베이스에 반영되어야 한다. 즉, 시스템 장애 또는 기타 문제가 발생해도 데이터의 일관성과 무결성이 유지되어야 한다.

 

다음은 JPA를 사용하여 트랜잭션을 시작하고, 데이터 변경 작업을 수행한 후에 트랜잭션을 커밋하거나 롤백하는 예시 코드다.

EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();

try {
    transaction.begin(); // 트랜잭션 시작
    // 데이터 변경 작업 수행
    Product product = entityManager.find(Product.class, 1L);
    product.setName("새로운 상품명");

    transaction.commit(); // 트랜잭션 커밋
} catch (Exception ex) {
    transaction.rollback(); // 트랜잭션 롤백
} finally {
    entityManager.close();
}

위 코드에서는 EntityManager를 사용하여 엔티티를 조회하고, 엔티티의 속성을 변경하는 데이터 변경 작업을 수행한다. 이러한 데이터 변경 작업은 트랜잭션 내에서 수행되어야 한다. 따라서, 트랜잭션을 시작하고, 변경 작업을 수행한 후에는 반드시 트랜잭션을 커밋하거나 롤백해야 한다.

트랜잭션을 커밋하면, 영속성 컨텍스트에서 변경 사항이 데이터베이스에 반영된다. 반면에 트랜잭션을 롤백하면, 변경 사항은 모두 취소되어 원래의 상태로 복원된다. 이를 통해 데이터 일관성을 유지할 수 있다.

 

< 주로 활용 되는 곳 >

 

은행 및 금융 업무: 은행 및 금융 기관에서는 트랜잭션을 사용하여 계좌 이체, 입출금, 거래 기록 등의 금융 업무를 처리한다. 트랜잭션을 통해 동시성 문제를 해결하고 데이터의 일관성과 정확성을 유지할 수 있다.

온라인 쇼핑 및 결제: 온라인 쇼핑몰이나 결제 시스템에서 트랜잭션은 주문 처리, 결제 처리, 재고 관리 등의 업무에 활용된다. 고객이 주문을 생성하거나 결제를 수행할 때, 트랜잭션은 데이터의 일관성과 결제 과정의 안전성을 보장한다.

예약 시스템: 항공사, 호텔, 렌터카 등의 예약 시스템에서는 동시성을 관리하고 데이터의 일관성을 유지하기 위해 트랜잭션을 사용한다. 여러 사용자가 동시에 예약을 시도하더라도 충돌이나 중복 예약을 방지하여 데이터의 정확성과 일관성을 유지할 수 있다.

자원 관리 시스템: 자원 관리 시스템에서는 트랜잭션을 사용하여 자원의 예약, 할당, 해제 등의 작업을 처리한다. 예를 들어, 컴퓨터 자원의 할당이나 데이터베이스의 락(lock) 관리 등에서 트랜잭션이 활용한다.

비즈니스 프로세스 관리: 비즈니스 프로세스 관리 시스템(BPM)에서는 트랜잭션을 사용하여 여러 단계의 작업을 원자적인 단위로 처리하고, 중간 상태에서의 실패를 방지하여 데이터 일관성과 정확성을 유지한다.

이 외에도 트랜잭션은 데이터베이스 시스템의 안정성과 신뢰성을 보장하는데 핵심적인 역할을 한다. 다양한 업무 및 응용 분야에서 트랜잭션이 활용되어 데이터의 일관성과 정확성을 유지하고 동시성 문제를 해결할 수 있다.

'SQL 이론' 카테고리의 다른 글

DBMS(Database Management System)  (0) 2023.05.16
DataBase 일관성/무결성 제약 조건  (0) 2023.05.16
Mysql 설치 및 DBeaver 설치 방법 (Windows)  (0) 2023.05.14
row와 column이 뭐에요?  (0) 2022.07.28
Data Base가 뭐에요?  (0) 2022.07.28

+ Recent posts