Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #replica #복제본 #aurora #database #고가용성
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 썸네일 #이미지
- aws #아키텍트 #과정 #vpc #인프라 구축 #ec2 #instance #launch #template #생성 #ami #amazone #machine #image
- 프로세스 #CPU #시공유 #커널
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #trigger #python3.9 #패키지 #
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #고가용성 #테스트 #alb #application #load balancer #application
- aws #아키텍트 #과정 #vpc #인프라 구축
- 쓰레드 #쓰레드풀 #프로세스
- aws #아키텍트 #과정 #vpc #인프라 구축 #t.g #target group #alb #application #load #balancer #web #server
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #alb #application #load #balancer #security #group #igw #ec2 #vpc #virtual #private #cloud
- aws #아키텍트 #과정 #vpc #인프라 구축 #aurora #database #rds #rdbs #load #balancer #web #page #haproxy
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- aws #아키텍트 #과정 #vpc #인프라 구축 #db #장애조치 #reand only #replica #events
- aws #아키텍트 #과정 #vpc #인프라 구축 #auto scailling #lauch template #ec2 instace #private #subnet
- 업로드 #lambda #함수 #모바일 이미지 #썸네일 이미지
- aws #아키텍트 #과정 #vpc #인프라 구축 #second nat #gateway #routing table #route53 #고가용성 #private subnet #
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #message #queue #sns구독
- aws #아키텍트 #과정 #vpc #인프라 구축 #amazon sns #server #less #architecture
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #endpoint #cloudwatch #monitoring
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 비트 #바이트 #이진수
- aws #아키텍트 #과정 #vpc #인프라 구축 #alb #load balancer #t.g #target #group #haproxy #high ability #db #replica #region
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 #스토리지 #isci #이미지 #업로드
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 스토리지 #objects storage #events #upload #알림
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #round robin #process #high ability #auto scailling #app server #launch template
Archives
- Today
- Total
요리사에서 IT개발자로
Spring Boot @Transactional 요약 본문
https://hs-backend.tistory.com/209
스파르타 코딩클럽 JPA 심화 트랜잭션
트랜잭션이란 데이터 베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위데이터들을 생성 조회 수정 삭제 후 최종 결과물을 만들 때 까지의 하나의 작업을 트랜잭션으로 관리할 수 있다.
hs-backend.tistory.com
@Trasactional
Jpa가 아닌 스프링 프레임워크에서 제공하는 에너테이션
데이터의 상태를 변경시키는 작업 또는 한번에 수행되어야 하는 연산들을 의미한다.
Create, Update, Delete
한번에 수행되어야하는 연산들은
모두 에러 없이 끝나야 한다.
중간에 수정되게 또는 삭제되게 하면
롤백한다.
@Trasactional
어노테이션이 적용된 클래스는 실행 중에 예외가 발생하면 롤백한다.
(수행한 쿼리들을 모두 롤백한다)
스프링 프레임워크의 기본 설정
UnChecked Exception (RuntimeException 또는 상속받는 자식 예외 클래스)가 발생하면
모두 롤백한다.
@Transactional을 해당 클래스에 선언하면 클래스에 포함된 모든 메서드에 위에 기능이 적용된다.
원자성
트랜잭션 작업이 끝나면
Commit 또는 Rollback 되어야한다.
@Transactional을 사용하면 스프링 프레임워크는 AOP 프록시 객체로 넘긴다.
@Transactional은 Repository클래스 보다 Service 클래스의 메서드나 클래스에 선언하는 것이 일반적이다.
서비스 클래스는 트랜잭션 단위로 나누어 데이터를 처리하기에 적합하다.
Repository클래스는 메서드로 조합되어 있고
Controller는 내부로직이 서비스에 있다.
원자성
하나의 처리작업
일관성
있는 유지력
격리성
동시에 실행되지 않게
영속성
결과가 항상 저장되어야한다.
선언하는 방법
@Override
@Transactional
public void registerUser(UserRequestDto.Register requestDto) {
if (userRepository.existsByUsername(requestDto.getUsername())) {
throw new DuplicateUsernameException("Duplicate username.");
}
User user = User.builder()
.username(requestDto.getUsername())
.password(passwordEncoder.encode(requestDto.getPassword()))
.nickname(requestDto.getNickname())
.introduce(requestDto.getIntroduce())
.email(requestDto.getEmail())
.role(UserRole.USER)
.build();
UserPasswordRecord userPasswordRecord = new UserPasswordRecord(
passwordEncoder.encode(requestDto.getPassword()));
user.addPasswordRecord(userPasswordRecord);
userRepository.save(user);
}
https://velog.io/@ha0kim/Transactional
@Transactional
실무에서 rabbitmq send message 부분이 데이터 업데이트 하는 @transactional 함수에 같이 포함되어 있는 부분이 있었다.이로 인해, 실제로 데이터가 업데이트가 되던지 말던지 rabbitmq에는 이미 업데이트
velog.io
https://assu10.github.io/dev/2023/09/10/springboot-database-4/
Spring Boot - 데이터 영속성(4): 트랜잭션과 @Transactional
이 포스트에서는 JPA 에서의 트랜잭션에 대해 알아본다.
assu10.github.io
반응형
'Spring' 카테고리의 다른 글
테스트 코드 작성? (단위테스트 JUnit) (0) | 2024.07.08 |
---|---|
테스트 코드의 중요성 (0) | 2024.07.05 |
스파르타 코딩클럽 JPA 심화 JPARepository 기능 (0) | 2024.06.27 |
스파르타 코딩클럽 JPA 심화 트랜잭션 (0) | 2024.06.26 |
SQL 쿼리 delete메소드 작동에 대해 (0) | 2024.06.25 |