[Spring] transaction 트랜잭션

728x90
반응형

트랜잭션이란

더이상 나눌 수 없는 가장 작은 작업 단위 이다.

 

트랜잭션의 특성으로는 ACID가 있다.

원자성(Atomicity) 하나의 작업단위는 그 결과가 성공 또는 실패할 경우 관련된 동장은 모두 동일한 결과가 나온다. 작업 중 하나라도 실패한다면 관련된 트랜잭션 내에서 처리한 동작들도 모두 처음 상태로 돌아간다.
일관성(Consistency) 트랜잭션이 성공적으로 처리되면 데이터베이스의 관련된 모든 데이터는 일관성을 유지해야 한다.
고립성(Isolation) 트랜잭션은 독립적으로 처리되며, 처리되는 중간에 외부에서의 간섭은 없어야 한다. 서로 다른 트랜잭션이 동일한 데이터에 동시에 접근할 경우 적절한 동시 접근 제어를 해야 한다.
지속성(Durability) 트랜잭션이 성공적으로 처리되면 그 결과는 지속적으로 유지되어야한다.

 

이 중 트랜잭션의 대표적인 특성은 '원자성'이다.

되려면 모두 다 되어야 하고, 하나라도 안된다면 모두 다 안되어야 한다.

 

과정 중 하나라도 실패할 경우 전체 과정을 모두 취소하고 트랜잭션이 시작하기 전의 상태로 되돌리는 것을 '롤백'이라고 한다.

 

스프링은 코드기반 트랜잭션과 선언적 트랜잭션처리를 지원한다.

어노테이션을 이용한 트랜잭션은 선언적 트랜잭션 처리이다.

 

@Transactional 어노테이션은 인터페이스나 클래스, 메서드에 사용할 수 있다.어노테이션이 적용된 대상은 설정된 트랜잭션 빈에 의해서 트랜잭션이 처리된다.

 

[출처 - 스프링부트 시작하기 김인우]

728x90
반응형