본문 바로가기
Java/JPA

[SpringBoot_JPA_1] @Transactional

by HJ0216 2023. 5. 29.

이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발] 수강하며 정리한 글입니다.

 

 

🟦 기본 환경: IDE: IntelliJ, Language: Java

 

 

@Transactional

: 선언적 Transaction, 해당 범위 내 메서드가 트랜잭션이 되도록 보장

: 클래스, 메소드에 @Transactional이 선언되면 해당 클래스에 트랜잭션이 적용된 프록시 객체 생성

→ 프록시 객체는 @Transactional이 포함된 메서드가 호출될 경우, 트랜잭션을 시작하고 Commit or Rollback을 수행

* CheckedException or 예외가 없을 때는 Commit

  UncheckedException이 발생하면 Rollback

 

즉, @Transactional를 선언함으로써 연산의 원자성이 보장되어, 연산이 도중에 실패할 경우 변경사항이 Commit되지 않음

 

 

@Transactional 우선 순위

Class Method > Class > Interface Method > Interface

 

 

@Transactional 주의 사항

1. Public Method에서만 사용 가능

2. @Transactional이 적용되지 않은 Public Method에서 @Transactional이 적용된 Public Method를 호출할 경우, 트랜잭션이 동작 X

 

 

 

참고 자료

 

@Transactional - Incheol's TECH BLOG

스프링에서 트랜잭션 처리는 보통 @Transactional 어노테이션을 많이 사용하게 된다. @Transactional은 클래스 또는 메소드에 사용할 수 있으며 @Transactional이 포함된 메소드가 호출될 경우, 프록시 객체

incheol-jung.gitbook.io

 

 

[Spring] @Transactional의 이해

스프링에서 트랜잭션 처리를 위해 선언적 트랜잭션을 사용한다. 선언전 트랜잭션이란 설정 파일 or 어노테이션 방식으로 간편하게 트랜잭션에 관한 행위를 정의하는 것이다. (물론, 프로그래밍

imiyoungman.tistory.com