[DEV] study&learn
article thumbnail

트랜잭션이 뭐야?

만약 데이터베이스의 데이터를 수정하는 도중에 예외가 발생한다면 어떻게 해야할까?

데이터베이스의 데이터들은 수정이 되기 전의 상태로 다시 되돌아가야 하고, 다시 수정 작업이 진행되어야 할 것이다.

이처럼 여러 작업을 진행하다가 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용되는 것이 Transaction(트랜잭션)이다.

 

Transaction -> 더 이상 쪼갤 수 없는 최소 작업 단위

 

트랜잭션은 commit 으로 성공하거나 rollback 으로 실패 이후 취소되어야 한다. (YES or NO)

 

  • 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미한다.
  • begin, commit 을 자동으로 수행해준다.
  • 예외 발생 시 rollback 처리를 자동으로 해준다.
  • 트랜잭션은 4가지의 특징을 가지고 있다.

원자성(Atomicity)

한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리한다. 즉, 모두 성공 또는 모두 실패.

일관성(Consistency)

트랜잭션은 일관성 있는 데이터베이스 상태를 유지한다. (data integrity 만족 등)

격리성(Isolation)

동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리해야 한다.

영속성(Durability)

트랜잭션을 성공적으로 마치면 결과가 항상 저장되어야 한다.

 

트랜잭션 처리 방법

스프링에서는 간단하게 어노테이션 방식으로

@Transactional 을 메소드, 클래스, 인터페이스 위에 추가하여 사용하는 방식이 일반적이다.

이 방식을 선언적 트랜잭션이라고 부르며, 적용된 범위에서는

트랜잭션 기능이 포함된 프록시 객체가 생성되어 자동으로 commit 혹은 rollback 을 진행해준다.

 

<참고>

 

[Java]@Transactional Annotation 알고 쓰자

초반 @Transactional 어노테이션에 대해 자세히 알아보지 않고,막연히 롤백때 사용한다고 하여 SQL C,U,D 를 할 때마다 메소드 위에 붙여서 사용하곤 하였다.하지만, 내 코드를 보신 선임께서 단지 @Tran

velog.io

 

 

[Spring] 트랜잭션에 대한 이해와 Spring이 제공하는 Transaction(트랜잭션) 핵심 기술 - (1/3)

1. Transaction(트랜잭션)에 대한 이해 [ 트랜잭션(Transaction)의 필요성 ] 만약 데이터베이스의 데이터를 수정하는 도중에 예외가 발생된다면 어떻게 해야 할까? DB의 데이터들은 수정이 되기 전의 상

mangkyu.tistory.com

 

profile

[DEV] study&learn

@devjuni

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!