| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 서버저장방식
- 정보처리기사실기 기본개념
- REST API
- 프론트엔드
- C# @rendermode
- CS
- C# InteractiveServer
- 스프링부트의 장단점
- 스프링부트 단점
- 스프링 스프링부트 차이점 공통점
- Service Worker
- jvm구성요소
- spring spring boot 차이점 공통점
- InteractiveServer
- c언어 정보처리기사
- 컴퓨터과학
- Blazor WebAssembly
- OPC-UA
- 기술면접
- Blazor Web App
- cs기술면접
- nosql
- Redundant Array of Independent
- SPA MPA 차이
- SPA MPA
- C# Blazor
- 스프링부트 장점
- SPA MPA 특징
- C# CS
- C#이론
Archives
- Today
- Total
담비의 개발블로그
[Spring Boot]@Transactional에 대해 알아보자! 본문
@Transactional이란?
데이터베이스 작업의 단위로, 일련의 작업이 모두 성공하거나 모두 실패하도록 보장하는 메커니즘이다. 데이터 무결성을 보장하고, 복잡한 데이터베이스 트랜잭션 관리 코드를 간결하게 만들어주는 매우 유용한 도구이다.
◆ 특징
1. 트랜잭션 내의 모든 작업이 모두 성공하거나 모두 실패하도록 보장한다. 만약 하나의 작업이 실패하면, 트랜잭션 내의 모든 작업이 롤백(되돌리기)된다.
2. 데이터베이스의 상태가 항상 일관성을 유지하도록 한다. 트랜잭션이 완료되기 전까지 데이터베이스의 상태가 변경되지 않는다.
3. 트랜잭션 내의 작업이 다른 트랜잭션에 영향을 받지 않도록 격리시킨다. 이는 동시에 여러 트랜잭션이 실행될 때 발생할 수 있는 충돌을 방지한다.
4. 트랜잭션이 성공적으로 완료되면, 그 결과가 영구적으로 저장된다.
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class MyService {
private final MyRepository myRepository;
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
@Transactional
public void performTransactionalOperation() {
// 데이터베이스 작업 1
myRepository.save(entity1);
// 데이터베이스 작업 2
myRepository.save(entity2);
// 만약 여기서 예외가 발생하면, 위의 작업 1과 2는 모두 롤백된다.
}
}
◆ 동작 방식
@Transactional 애노테이션은 AOP(Aspect-Oriented Programming) 방식으로 동작한다. Spring은 이 애노테이션이 붙은 메서드의 호출을 가로채서 트랜잭션 시작, 커밋, 롤백 등을 처리한다.
'언어&프레임워크 > Spring&Spring Boot' 카테고리의 다른 글
| [Spring Boot]구글 리캡차 사용법 (1) | 2024.08.19 |
|---|---|
| [Spring Boot]JUnit이란? (0) | 2024.07.24 |
| [Spring Boot] 프로젝트 구성방법 (0) | 2024.07.02 |
| [Spring Boot]IoC 컨테이너란? (0) | 2024.06.22 |
| [Spring Boot] Bean이란? (0) | 2024.06.22 |
