[Java] 트랜잭션 | @Transactional

장수현·2021년 10월 18일
0

에어비앤비

목록 보기
10/15

트랜잭션이란?

  • 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미한다.
  • begin, commit을 자동으로 수행해준다.
  • 예외 발생 시 rollback 처리를 자동으로 수행해준다.
  • ACID를 유지해야 한다.

ACID란?

  • Automaticity(원자성)
    한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리한다. 즉, 모두 성공 또는 모두 실패
  • Consistency(일관성)
    트랜잭션은 일관성 있는 데이터베이스 상태를 유지한다.
  • Isolation(격리성)
    동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리해야한다.
  • Durability(영속성)
    트랜잭션을 성공적으로 마치면 결과가 항상 저장되어야 한다.

스프링에서는 간단하게 어노테이션 방식으로 @Transactional을 메소드, 클래스, 인터페이스 위에 추가하여 사용하는 방식이 일반적이다. 이 방식을 선언적 트랜잭션이라 부르며, 적용된 범위에서는 트랜잭션 기능이 포함된 프록시 객체가 생성되어 자동으로 commit 혹은 rollback을 진행해준다.

0개의 댓글