트랜잭션이란

트랜잭션(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

+ Recent posts