[스프링3트랜잭션강좌]Spring트랜잭션지원, Spring Framework3.X Transaction, 스프링프레임워크3.X 트랜잭션지원기능, 오라클자바, 오엔제이프로그래밍실무교육센터 스프링교육
트랜잭션 관리는 엔터프라이즈 애플리케이션을 개발할 때 데이터 무결성과 일관성을 보장하기 위한 필수적인 기법이다.
스프링의 경우 EJB와 마찬가지로 프로그래밍에 의한 방법과 선언적 방법을 통해 트랜잭션을 관리한다. 스프링 트랜잭션 관리의 목표는 POJO에 트랜잭션 처리 능력을 부여해서 EJB트랜잭션의 대안기능을 제공하는 것이다.
프로그래밍적 트랜잭션 관리는 커밋, 롤백등 코드를 프로그램내에 기술하는데 중복된 코드가 모듈마다 존재할 가능성이 있다. AOP에 관한 배경 지식이 있다면 트랜잭션도 하나의 횡단 관심사가 된다는 것을 이해하자.
선언적 방식의 트랜잭션 관리는 트랜잭션 관리 코드를 선언적 방식으로 비즈니스 메소드에서 분리하여 기능을 수행한다. 트랜잭션 관리는 하나의 공통 관심사로서 AOP 방식으로 모듈화 될 수 있으며 AOP를 통해 선언적인 방식으로 트랜잭션 관리를 지원한다.
스프링 프록시를 사용할 때 성능 저하가 고민된다면 프로그램 방식의 트랜잭션 관리를 사용하고 직접 원시 트랜잭션 코드를 써서 트랜잭션을 관리하도록 한다. TransactionTemplate클래스를 이용하면 되는데 트랜잭션이 시작되어 커밋되는 경계시점과 관련한 템플릿 메소드를 제공한다.
스프링의 프로그램에 의한 트랜잭션 관리는 JTA의 구현과 관계가 있는 EJB와는 달리 스프링에서는 트랜잭션을 적용하는 코드로 부터 실제 트랜잭션의 구현을 분리하는 콜백 메커니즘을 사용한다. 사실 스프링에서의 트랜잭션 관리 지원은 JTA의 구현을 필요로 하지 않는다.
만약 애플리케이션이 여러 데이터베이스에 걸친 트랜잭션을 사용한다면 스프링은 서드파티의 JTA 구현체를 사용하여 분산트랜잭션(XA)을 지원한다.
프로그래밍에 의한 방법으로 트랜잭션을 관리하면 코드상에서 정확히 트랜잭션의 범위를 지정 가능 하지만 선언적 트랜잭션은 코드에서의 작업을 트랜잭션 규칙으로 부터 분리할 수 있는 장점이 있다.
<그림, 스프링프레임워크 트랜잭션 관리자>
댓글 없음:
댓글 쓰기