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 |
Tags
- tar #build #배포 #통신포트 #설정방법 #linux #apache
- aws #아키텍트 #과정 #vpc #인프라 구축
- 비트 #바이트 #이진수
- oracle vmbox #rocky #linux9 #명령어 #암호화인증 #해시알고리즘
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- ubuntu #설정변경 #vmware #vmbox #linux #명령어
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #private subnet
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #internet gateway #연결
- storage #로컬스토리지 #세션스토리지 #백그라운드 서비스
- virtualbox #vmware #router #nat #pat #네트워크 구성도 #aws #ubuntu #
- aws #클라우드 #퍼블릭 클라우드 #아키텍트 #과정
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #igw #curl #명령어 #http
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- mysql #linux #설정 #wordpress #웹사이트 #db 연결 #
- 인바운드 #아웃바운드 #방화벽설정
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- 쓰레드 #쓰레드풀 #프로세스
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #route53 #igw #연결
- samba #가상머신 #daemon
- aws #아키텍트 #과정 #vpc #인프라 구축 #퍼블릭 #보안그룹 #생성 #http #ipv4
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #s3 #bucket #생성 #이미지업로드
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #웹페이지 #http #public #instance
- sasac #aws 클라우드 #아키텍트 과정 #가상화 #vmbox #vmware #esxi #tar #selinux
- haproxy #wordpree #php #linux #가상화 #가상머신 #내용정리
- aws #아키텍트 #과정 #vpc #인프라 구축 #퍼블릭 서브넷 #안에 #ec2 인스턴스 #ami #생성 #firewall
- 프로세스 #CPU #시공유 #커널
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
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 |