SEB_BE 52일차 - 트랜잭션

subimm_·2022년 11월 6일
0

코드스테이츠

목록 보기
52/83

💡 오늘의 학습목표

  • 트랜잭션
  • Spring Framework에서의 트랜잭션 처리

📔 트랜잭션(Transaction) 이란?

  • 물리적으로는 여러 개의 작업이지만 논리적으로는 마치 하나의 작업으로 인식해서 전부 성공하던지, 전부 실패하던지 ( All or Nothing )의 둘 중 하나로만 처리되어야 트랜잭션의 의미를 가짐.

📖 ACID 원칙

  • 원자성(Atomicity)
    작업을 더 이상 쪼갤 수 없음
    둘 다 실패하던지, 둘 다 성공하던지 하나로만 처리되는 것이 보장되어야 한다.
  • 일관성(Consistency)
    트랜잭션이 에러 없이 성공적으로 종료될 경우, 비즈니스 로직에서 의도하는대로 일관성있게 저장되거나 변경되는 것
  • 격리성(Isolation)
    여러 개의 트랜잭션이 실행될 경우 각각 독립적으로 실행이 되어야 함.
  • 지속성(Durability)
    트랜잭션이 완료되면 그 결과는 지속되어야 한다. (데이터베이스가 종료되어도 데이터는 물리적인 저장소에 저장되어 유지되어야 함)

📖 트랜잭션 커밋(commit)과 롤백(rollback)

  • 커밋(commit)
    • 모든 작업을 최종적으로 데이터베이스에 반영하는 명령어 (변경된 내용이 데이터베이스에 영구적으로 저장)
    • commit 명령을 수행하지 않으면 작업의 결과가 데이터베이스에 최종적 반영x
    • commit 명령을 수행하면, 하나의 트랜잭션 과정은 종료하게 됨.
  • 롤백(rollback)
    • 롤백은 작업 중 문제가 발생했을 때, 트랜잭션 내에서 수행된 작업들을 취소
    • 트랜잭션 시작 이전의 상태로 되돌아 간다.
  • 커밋 예제

    둘 다 insert문 생성되지만 새로고침후 조회하면 1개만 생성됨.
  • 롤백 예제

    커밋 이전에 롤백이 실행되어서 저장되지 않음.

📜 JPA의 tx.commit() 내부

  • JPA API 를 통해 EntityTransaction 객체를 얻어 이 객체(tx)로 tx.commit() 메서드를 호출했을 때 동작 과정
profile
코린이의 공부 일지

0개의 댓글

관련 채용 정보