Programing/egovFramework

전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-4) - context-transaction.xml

리커니 2017. 2. 15.
반응형

 

 전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-4) - context-transaction.xml

 

전자정부프레임워크는 context-transaction.xml 파일에서 트렌젝션에 대한 처리를 하도록 설정되어 있습니다.

여기서는 AOP를 사용하여 서비스임플에서 발생하는 이벤트에 대한 트랜잭션 처리를 합니다.

 

그럼 소스를 보도록 하죠.

src/main/resources/egovfaramework/spring/ 에 있는 context-transaction.xml 파일을 열어어 봅니다.

 

Namespaces탭을 눌러 어 떤 Namespace가 사용되는지 확인합니다.

 

 

앞서 말한데로 aop가 사용되었고, beans와 tx namespace가 사용된 것을 확인 할 수 있습니다.

 

 

소스탭으로 돌아와보면, 이에 대한 선언이 가장 처음 나오게 됩니다.

 

 

다음 부분은 실제로 트랜젝션 처리를 해줄 클래스 파일을 bean 등록 하는 부분입니다.

Spring에서는 Hibernate, JDBC,. JTA, JPA등 다양한 트랜젝션 API를 지원합니다.

그중에 jdbc를 사용한다는 것을 확인 할 수 있습니다.

 

txManager라는 id로 등록된 DataSourceTransactionManager 클래스에서

context-datasource.xml 에 bean 등록된 dataSouce라는 id의 bean을 매개변수로 사용하겠다는 것입니다.

dataSouce에서 발생하는 트랜젝션에 대한 처리를 하겠다는 것이죠.

 

 

 

그럼 언제 이것을 사용할 것이냐.

이제 그것을 설정해 주는 부분이 다음에 나오게 됩니다.

 

 

<tx:advice> 태그를 사용하여 어드바이스를 정의하고,

이 어드바이스가 언제 실행될지 <aop:config> 태그를 사용하여 pointcut과 매핑합니다.

AOP에 대한 설명은 아래의 Link를 참고하도록 합니다.

 

Link : 전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-1) - context-aspect.xml

 

pointcut 으로 설정된 egovframework.example.sample..경로의 모든 Imple에서 Exception이 발생하면

위에 선언한 txManager를 사용하여 rollback을 하겠다는 선언입니다.

 

하지만 보통 트랜젝션 롤백 처리는 insert, update, delete 문에서 필요한 것이기 때문에 보통

어드바이스는 아래와 같이 사용합니다.

 

 

get으로 시작하는 메소드는 읽기전용,

insert, update, delete로 시작하는 메소드는 트랜젝션발생시 롤백처리.

 

 

 

propagation 속성의 설정값과 <tx:method>의 속성값은 아래를 참고.

 

[propagation 속성]

 

 REQUIRED

 기본값, 트랜젝션이 필요하다는 것을 의미, 트랜젝션이 있다면 참여, 없다면 새로 생성

 SUPPORTS

 트랜젝션이 있다면 참여, 없으면 없는데로 진행

 MANADATORY

 트랜젝션이 있다면 참여, 없다면 예외발생

 REQUIRES_NEW

 항상 새로운 트랜젝션 생성

 NOT_SUPPORTED

 트랜젝션 사용안함. 이미 있다면 보류

 NEVER

 트랜젝션 사용 안함

 NESTED

 중첩 트랜젝션 생성. 기존에 트랜젝션 내에 다시 트랜젝션 생성.

기존의 트랜젝션은 후에 생성된 트랜젝션에 영향을 주지만, 후에 생성된 트랜젝션은 기존 트랜젝션에 영향을 주지 않음.

 

[<tx:method>속성]

 

 name

 트랜젝션이 적용된 메소드명

 propagation

 트랜젝션 전파규칙 설정

 isolation

 트랜젝션 격리 레벨 설정

 read-only

 읽기전용 설정

 no-rollback-for

 트랜젝션을 롤백하지 않을 예외타입설정

 rollback-for

 트랜젝션을 롤백할 예외타입설정

 timeout

 트랜젝션 타임아웃 시간 설정(초)

 

반응형

댓글

💲 추천 글