본문 바로가기

수업 & 공부/용어 정리

57 : @Transactional

@Transactional 이란?

스프링에서는 트랜잭션 처리를 지원하는데 그중 어노테이션 방식으로 @Transactional을 선언하여

사용하는 방법이 일반적이며, 선언적 트랜잭션이라 부른다

@RequiredArgsConstructor
@Service
@Slf4j
public class CommentJpaService {
    public final CommentRepository commentRepository;
    public final BoardRepository boardRepository;

    @Transactional
    public CommentDTO postComment(CommentDTO commentDTO) {

 


@Transactional 의 역할은?

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

 

원자성(Atomicity)

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

일관성(Consistency)

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

격리성(Isolation)

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

영속성(Durability)

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

 

 

 

(출처 : https://velog.io/@kdhyo/JavaTransactional-Annotation-%EC%95%8C%EA%B3%A0-%EC%93%B0%EC%9E%90-26her30h)