Spring Boot에서 트랜잭션 관리는 @Transactional 주석을 사용하여 수행할 수 있습니다. 이 블로그 게시물에서는 @Transactional을 사용하여 스프링 부트 애플리케이션에서 데이터 일관성을 보장하고 오류 처리를 단순화하는 방법을 살펴보겠습니다.
@Transactional을 사용하려면 일반적으로 트랜잭션 동작을 원하는 서비스 클래스의 메서드에 @Transactional을 배치합니다.
import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class UserService{ @Transactional public void createUser() { // enter your transactional code here } }
트랜잭션의 전파 및 격리 수준을 지정하여 트랜잭션 작동 방식을 제어할 수 있습니다.
전파: 기존 트랜잭션이 이미 실행 중일 때 트랜잭션이 동작하는 방식을 정의합니다.
격리: 거래의 데이터 가시성 수준을 정의합니다.
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) public void createUser() { // enter your transactional code here }
롤백을 트리거해야 하는 예외를 지정할 수 있습니다.
@Transactional(rollbackFor = Exception.class) public void createUser() { // your transactional code here }
해당 방법이 데이터 읽기만 하고 쓰기 작업을 수행하지 않는 경우 성능 최적화를 위해 읽기 전용으로 표시할 수 있습니다.
@Transactional(readOnly = true) public void getUser() { // your read-only code here }
클래스 수준에 @Transactional을 배치하여 클래스의 모든 메서드에 적용할 수도 있습니다.
@Service @Transactional public class UserService { public void getUser() { // transactional code } public void createUser() { // transactional code } }
import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class UserService { @Transactional public void saveUser() { // code to save data } @Transactional(readOnly = true) public void fetchUser() { // code to fetch data } @Transactional(propagation = Propagation.REQUIRES_NEW) public void newTransaction() { // code to execute in a new transaction } @Transactional(rollbackFor = {CustomException.class}) public void performWithRollback() { // risky code that may throw CustomException } }
@Transactional Spring Boot를 사용하면 트랜잭션을 선언적으로 관리하여 다양한 시나리오에서 트랜잭션이 작동하는 방식을 정확하게 지정할 수 있습니다. 이는 데이터 일관성을 보장하고 애플리케이션의 오류 처리를 단순화하는 데 도움이 됩니다.
https://www.baeldung.com/spring-transactions-read-only
https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html
Github: https://github.com/tharindu1998/transactional-blog
위 내용은 Spring Boot의 @Transactional 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!