트랜잭션? 생소한 단어다!
하지만 애플리케이션에서 트랜잭션은 정말 필수적인 요소였다!
기존에 데이터를 처리하면서 중간에 오류가 발생하면 어떻게 되는지, 왜 롤백이 필요한지 등의 개념을 이해하지 못했었는데, 트랜잭션을 통해 이런 문제를 해결할 수 있다는 것을 알게 되었다.
트랜잭션(Transaction)이란?
트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 혹은 일련의 연산들을 의미
트랜잭션은 주로 데이터베이스 시스템에서 데이터의 무결성을 보장하기 위해 사용된다.
이는 트랜잭션이 데이터에 대한 모든 변화를 추적하고, 필요한 경우 이전 상태로 롤백(복원)할 수 있기 때문.
선언형 방식의 트랜잭션 적용
선언형 방식의 트랜잭션 적용은 트랜잭션 관리를 추상화된 선언으로 처리하는 방법을 의미.
이 방식은 코드상에서 명시적인 트랜잭션 관리 API 호출 없이, 주로 어노테이션 또는 XML 설정 등을 통해 트랜잭션의 시작과 종료, 롤백 조건 등을 선언적으로 설정할 수 있다.
자바와 스프링 프레임워크에서는 주로 @Transactional 어노테이션을 사용하여 선언형 트랜잭션을 구현. 이 어노테이션을 메소드나 클래스에 붙이면, 해당 메소드 혹은 클래스에 포함된 메소드들이 트랜잭션 범위에서 실행되게 된다. 만약 메소드 실행 도중 예외가 발생하면, 선언된 롤백 규칙에 따라 트랜잭션이 롤백된다.
선언형 트랜잭션 관리의 장점은 코드의 가독성과 유지 보수성이 향상된다. 트랜잭션 로직이 비즈니스 로직에 섞이지 않고, 별도로 선언되기 때문에 비즈니스 로직을 집중적으로 이해하고 구현할 수 있다. 또한, 트랜잭션 설정이 중앙화되므로 트랜잭션 관련 설정 변경이 필요할 때 유연하게 대응할 수 있다.
단, 선언형 트랜잭션 관리는 비교적 간단한 트랜잭션 로직에 적합하며, 복잡한 트랜잭션 로직이 필요한 경우 프로그래밍적인 방법을 사용해야 할 수도 있다.