더북(TheBook)

일관성 있는 모듈의 트랜잭션 지원

데이터베이스를 이용할 때 신경 써야 할 부분은 한 업무를 여러 작업으로 진행할 때의 트랜잭션 처리입니다.

Note ≣ | 트랜잭션이란?

쪼갤 수 없는 최소 단위의 작업입니다. 애플리케이션을 개발할 때 데이터 무결성과 일관성을 보장하는 필수 기법입니다. 즉, 어떤 작업 프로세스를 하나로 묶어 실행하다 작업이 하나라도 실패하면 모두 실패 처리하고, 전체 작업이 성공하면 성공으로 처리하는 논리적인 작업 묶음입니다.

스프링은 데이터베이스 연동 기술과 트랜잭션 서비스 사이의 종속성을 제거하고 트랜잭션을 처리하는 일관된 방법을 제공합니다. 즉, 스프링이 제공하는 트랜잭션 추상 계층을 이용하면 데이터베이스 연동 기술과 상관없이 같은 방식으로 트랜잭션 기능을 활용할 수 있습니다. 또한 트랜잭션 서비스의 종류나 환경이 바뀌더라도 트랜잭션을 사용하는 코드는 그대로 유지하는 유연성도 제공합니다.

트랜잭션 관리 방법은 크게 프로그래밍적 트랜잭션과 선언적 트랜잭션으로 구분할 수 있는데, 스프링은 이 두 가지를 모두 지원합니다. 프로그래밍적 트랜잭션(programmatic transaction) 처리는 코드에서 트랜잭션 범위를 정교하게 정의할 수 있지만, 트랜잭션이 스프링의 종속적인 코드가 될 가능성이 큽니다. 선언적 트랜잭션 처리(declarative transaction)는 코드를 수정하지 않고도 트랜잭션을 적용하거나 변경할 수 있습니다. 또한 간편하게 XML 설정 파일이나 애너테이션을 이용하여 트랜잭션의 범위와 규칙을 정의할 수 있으므로 트랜잭션을 매우 쉽게 관리할 수 있습니다. 이런 장점 때문에 두 방법 중 실제 작업과 트랜잭션 규칙을 분리할 수 있는 선언적 트랜잭션 관리를 권고합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.