트랜잭션이란
트랜잭션(Transaction 이하 트랜잭션)이란, 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위이다.
쪼개질 수 없는 하나의 작업 단위를 의미한다.
Rollback : 작업 도중 문제가 발생할 때, 트랜잭션 실행 전 상태로 되돌리는 것
이전 Commit을 한 곳까지 복구된다.
Commit : 하나의 트랙잭션 과정이 종료된 후 변경된 내용을 모두 저장한다. 트랙잰션 작업 내용을 실제 DB에 저장
ACID(Atomicity, Consistency, Isolation, Durability) 성질이 보장된다.
원자성(Atomicity) | 한 트랜잭션 내에서 실행한 작업들을 하나의 단위로 처리한다. 작업이 모두 DB에 저장되거나 모두 반영되지 않거나 |
일관성(Consistency) | 트랜잭션 작업 처리 결과가 항상 일관성이 있어야한다. |
독립성(Isolation) | 트랜잭션 수행 시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장한다. 동시에 수행되는 트랜잭션들이 서로 영향을 미치지 못한다. |
영속성(Durability) | 성공적으로 수행된 트랜잭션은 영원히 반영되어야 한다. 성공적으로 처리된 결과가 항상 저장된다. |
스프링부트에서 지원하는 선언적 트랜잭션
설정파일이나 어노테이션을 이용하여 트랜잭션의 범위와 롤백 규칙 등을 정의할 수 있다.
선언 방식
1) <tx:advice> 태그를 이용한 트랜잭션 처리
2) @Transactional 어노테이션을 이용한 트랜잭션 설정
하나의 메소드에 여러 로직을 한 단위로 처리할 때, 하나의 로직에 문제가 발생하면 롤백을 시켜줘야 한다!!
AOP(Aspect Oriented Programming) : 관점 지향 프로그래밍
핵심 기능과 공통 기능을 분리시켜 핵심 기능에서 필요시 공통 기능 사용하는 방식.
트랜잭션은 AOP를 통해 이루어지므로 즉 다이나믹 프록시를 이용해 AOP가 동작된다는 말이다.
==> 인터페이스를 통해 호출이 되어야 트랜잭션 기능이 동작한다.
'Web Programming > SPRINGBOOT' 카테고리의 다른 글
Http 통신과 Socket 통신 (0) | 2021.02.16 |
---|---|
P2P (0) | 2021.02.10 |
@value 어노테이션 사용시 기본값 (0) | 2021.01.25 |
@Transaction 사용 시 내부 메소드 간의 호출 (0) | 2020.12.31 |
스케줄 기능 사용하기 (0) | 2020.11.30 |