BE Study
[BE Study] Day 8 -트랜잭션
고고잉93
2024. 2. 29. 00:27
728x90
◈ 트랙잭션(Transaction)
:쪼갤수없는 업무의 최소단위
=모든 SQL을 성공시키거나 하나라도 실패하면 모두 실패시키기.
public class OrderService{
public void completePayment(){
orderRepository.save(new Order(..));
pointRepository.save(new Point(..));
billingHistoryRepository.save(new BillingHistory(..));
} //order,point만 성공하고 billing만 실패가 될수 없다.
}
● 트랜잭션 시작하기
: start transaction;
● 정상 종료하기
: commit
● 실패처리하기
: rollback
▣ @Transactional
// 아래있는 함수가 시작될때 start transaction을 해준다 (트랙잭션을 시작)
// 함수가 예외없이 잘 끝났다면 commit
// 문제가 있다면 rollback -> 저장 자체가 안됨
@Transactional
public void saveUser(UserCreateRequest request) {
userRepository.save(new User(request.getName(), request.getAge()));
}
□ 영속성 컨텍스트란?
테이블과 매핑된 Entity객체를 관리/보관하는 역할
→ 스프링에서는 트랜잭션을 사용하면 영속성 컨텍스트가 생겨나고, 트랜잭션이 종료되면 영속성 컨텍스트가 종료된다.
□ 영속성 컨텍스트 기능 4가지
1. 변경감지(Dirty check)
: 영속성 컨텍스트 안에서 불러온 Entity는 명시적으로 save(userRepository.save())를 하지 않더라고, 변경을 감지해
자동으로 저장
2. 쓰기지연
: DB의 INSERT/ UPDATE/ DELETE SQL을 바로 날리는것이 아니라 트랜잭션이 commit될때 모아서 한번만 실행한다.
(Spring과 DB의 통신을 더 간결하게 하기위해)
3. 1차 캐싱
: 영속성 컨텍스트가 정보를 기억하여 중복작업 실행에 대한 효율을 증가시킨다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인
Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한 옵션들
www.inflearn.com
728x90