Backend/Spring

@Transactional

seung_soos 2023. 4. 23. 15:57

시작하며

@Transactional JPA를 활용한 프로젝트를 개발하였지만, 깊이 있는 이해도는 없었다. 명확하게 설명하지 못한다면,

제대로 알고있는게 아니라 생각한다. 공부내용 정리글이다.

 

Transactional 정의

데이터베이스에서 트랜잭션은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다.

여기서 단위는 더이상 쪼개질 수 없는 최소의 연산이다.

Transactional 특징

  • 원자성(Atomicity): 트랜잭션의 모든 작업이 완전히 성공하거나 완전히 실패하는 단일 단위로 처리되도록 보장하는 능력이다. 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것이다.
  • 일관성(Consistency): 각 데이터 트랜잭션이 데이터베이스를 일관성 있는 상태에서 일관성 있는 상태로 이동해야 함을 의미한다. 즉, 트랜잭션이 성공적으로 완료하면 언제나 동일한 데이터베이스 상태로 유지하는 것을 의미한다.
  • 격리성(Isolation): 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. 이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다. 즉, 데이터베이스는 스트레스 테스트를 통과해야 한다. 과부하로 인해 잘못된 데이터베이스 트랜잭션이 발생하지 않아야 한다.
  • 지속성(Durability): 성공적으로 수행된 트랜잭션은 영원히 반영(기록)되어야 함을 의미한다. 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주 될 수 있다. 데이터베이스내의 데이터는 트랜잭션의 결과로만 변경되어야 하며, 외부 영향에 의해 변경 될 수 없어야 한다.
  • 데이터베이스 트랜잭션 처리에 있어서 중요한 요소이며, 데이터베이스가 제공하는 일관성과 안정성을 보장합니다.