[코드스테이츠] S3.Unit6 회고

JinYoung Choi·2023년 6월 4일
0

트랜잭션? 생소한 단어다!

하지만 애플리케이션에서 트랜잭션은 정말 필수적인 요소였다!

기존에 데이터를 처리하면서 중간에 오류가 발생하면 어떻게 되는지, 왜 롤백이 필요한지 등의 개념을 이해하지 못했었는데, 트랜잭션을 통해 이런 문제를 해결할 수 있다는 것을 알게 되었다.

트랜잭션(Transaction)이란?

트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 혹은 일련의 연산들을 의미

트랜잭션은 주로 데이터베이스 시스템에서 데이터의 무결성을 보장하기 위해 사용된다.
이는 트랜잭션이 데이터에 대한 모든 변화를 추적하고, 필요한 경우 이전 상태로 롤백(복원)할 수 있기 때문.

ACID

  • 원자성(Atomicity): 트랜잭션이 데이터베이스에 모두 적용되거나, 또는 전혀 적용되지 않아야 함을 의미. 즉, 트랜잭션 내의 연산들은 모두 성공하거나 모두 실패해야 한다.
  • 일관성(Consistency): 트랜잭션의 수행이 데이터베이스의 일관성을 보장해야 함을 의미. 즉, 트랜잭션 시작 전과 완료 후에 데이터베이스의 모든 무결성 조건이 만족되어야 한다.
  • 독립성(Isolation): 동시에 수행되는 트랜잭션들이 서로 영향을 끼치지 않음을 의미. 각 트랜잭션은 서로 독립적인 수행을 보장받아야 한다.
  • 지속성(Durability): 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 반영되어야 함을 의미. 이후 시스템에 문제가 발생하더라도, 완료된 트랜잭션의 결과는 손실되지 않아야 한다.

선언형 방식의 트랜잭션 적용

선언형 방식의 트랜잭션 적용은 트랜잭션 관리를 추상화된 선언으로 처리하는 방법을 의미.
이 방식은 코드상에서 명시적인 트랜잭션 관리 API 호출 없이, 주로 어노테이션 또는 XML 설정 등을 통해 트랜잭션의 시작과 종료, 롤백 조건 등을 선언적으로 설정할 수 있다.

자바와 스프링 프레임워크에서는 주로 @Transactional 어노테이션을 사용하여 선언형 트랜잭션을 구현. 이 어노테이션을 메소드나 클래스에 붙이면, 해당 메소드 혹은 클래스에 포함된 메소드들이 트랜잭션 범위에서 실행되게 된다. 만약 메소드 실행 도중 예외가 발생하면, 선언된 롤백 규칙에 따라 트랜잭션이 롤백된다.

선언형 트랜잭션 관리의 장점은 코드의 가독성과 유지 보수성이 향상된다. 트랜잭션 로직이 비즈니스 로직에 섞이지 않고, 별도로 선언되기 때문에 비즈니스 로직을 집중적으로 이해하고 구현할 수 있다. 또한, 트랜잭션 설정이 중앙화되므로 트랜잭션 관련 설정 변경이 필요할 때 유연하게 대응할 수 있다.

단, 선언형 트랜잭션 관리는 비교적 간단한 트랜잭션 로직에 적합하며, 복잡한 트랜잭션 로직이 필요한 경우 프로그래밍적인 방법을 사용해야 할 수도 있다.

profile
백엔드 취준생

0개의 댓글