블로그

transaction 본문

개발자 준비과정/Spring, SpringBoot, JSP

transaction

하늘바람a 2024. 4. 30. 17:45

✅ transaction(트랜잭션)

 

정의

 
트랜잭션은 데이터베이스에서 데이터를 처리하는 기본 단위입니다.
트랜잭션은 여러 개의 데이터 조작 작업을 하나의 논리적인 작업 단위로 묶어 처리하는 것을 의미합니다.
트랜잭션은 ACID 특성을 가지고 있어 데이터베이스의 일관성과 신뢰성을 보장합니다.
 

ACID 특성


- 원자성(Atomicity): 트랜잭션의 작업 단위는 모두 성공하거나 모두 실패해야 한다.
- 일관성(Consistency): 트랜잭션이 실행되기 전과 후에 데이터베이스는 항상 일관된 상태를 유지해야 한다.
- 독립성(Isolation): 트랜잭션은 다른 트랜잭션의 작업에 영향을 받지 않아야 한다.
- 지속성(Durability): 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 데이터베이스에 반영되어야 한다.
 
ACID 트랜잭션은 일련의 단계를 준수하여 데이터 무결성을 유지한다. 
 

Commit과 Rollback

 
- Commit: 트랜잭션이 성공적으로 완료되면 데이터베이스에 영구적으로 반영된다.
- Rollback: 트랜잭션 중 오류가 발생하면 트랜잭션 전체가 취소되고 데이터베이스는 이전 상태로 복구된다.

 

✅ 스프링에서 transaction을 관리하는 법

 

어노테이션을 이용한 설정

 

@Transactional 어노테이션클래스 단위 혹은 메서드 단위에 선언해준다.

 
클래스에 선언하게 되면, 해당 클래스에 속하는 메서드에 공통적으로 적용된다.
메서드에 선언하게 되면, 해당 메서드에만 적용된다.

 
 

checked Exception, Unchecked Exception의 트랜잭션 처리

 

 
checked exception도 예외처리를 해 주려면 다음과 같이 어노테이션을 작성한다.

@Transactional(rollbackFor = Exception.class)