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 |
29 | 30 | 31 |
Tags
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #round robin #process #high ability #auto scailling #app server #launch template
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- 비트 #바이트 #이진수
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #message #queue #sns구독
- aws #아키텍트 #과정 #vpc #인프라 구축 #aurora #database #rds #rdbs #load #balancer #web #page #haproxy
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #db #장애조치 #reand only #replica #events
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축
- 썸네일 #이미지
- aws #아키텍트 #과정 #vpc #인프라 구축 #ec2 #instance #launch #template #생성 #ami #amazone #machine #image
- aws #아키텍트 #과정 #vpc #인프라 구축 #alb #load balancer #t.g #target #group #haproxy #high ability #db #replica #region
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #alb #application #load #balancer #security #group #igw #ec2 #vpc #virtual #private #cloud
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 #스토리지 #isci #이미지 #업로드
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #endpoint #cloudwatch #monitoring
- aws #아키텍트 #과정 #vpc #인프라 구축 #auto scailling #lauch template #ec2 instace #private #subnet
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #trigger #python3.9 #패키지 #
- 쓰레드 #쓰레드풀 #프로세스
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 스토리지 #objects storage #events #upload #알림
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #고가용성 #테스트 #alb #application #load balancer #application
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- aws #아키텍트 #과정 #vpc #인프라 구축 #t.g #target group #alb #application #load #balancer #web #server
- 업로드 #lambda #함수 #모바일 이미지 #썸네일 이미지
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #replica #복제본 #aurora #database #고가용성
- aws #아키텍트 #과정 #vpc #인프라 구축 #second nat #gateway #routing table #route53 #고가용성 #private subnet #
- aws #아키텍트 #과정 #vpc #인프라 구축 #amazon sns #server #less #architecture
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- 프로세스 #CPU #시공유 #커널
Archives
- Today
- Total
요리사에서 IT개발자로
Spring Boot @Transactional 요약 본문
https://hs-backend.tistory.com/209
@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
https://assu10.github.io/dev/2023/09/10/springboot-database-4/
반응형
'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 |