Spring 2.5 기반의 어노테이션을 이용한 트랜젝션처리

출처 : http://gerions.egloos.com/tag/annotation/page/1

집에오는길에 갑자기 이번 스프링 세미나때 토비님이 발표하신 내용이 떠올랐다.

세미나가 끝난지 2주가 다 되어가는데 그냥 정신을 놓고있다는 생각이 문득들었다. 연말이라서 더욱 마음이 풀린건지도 모르겠다.

아무튼 그당시의 기억을 살포시 되살려보자면~

어노테이션 기반으로 트랜젝션처리를 했던것이 떠오른다.

일단 DB 커넥션이 필요하므로 DataSource 를 하나 등록해보자~

아파치 dbcp 에 hsql 로 살포시 등록해보고 해당 트랜젝션을 사용할 TransactionManager 를 하나 선택해보자~

<!-- dbcp 설정 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
    <property name="url" value="jdbc:hsqldb:hsql://localhost" />
    <property name="username" value="sa" />
    <property name="password" value="" />
</bean>

<!-- TransactionManager -->
<bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

이제 필요한 기본정보가 끝났다.  본론으로 들어가면 어노테이션을 사용하도록 하는 설정이다.

<context:component-scan base-package="풀패키지명" />
해당 설정은 정의한 패키지를 사용하겠으니 해당부분을 찾아라~ 라는 것이다. 이름만봐도 유추가 가능하다.
뭐, 사실 이부분은 트랜젝션과 정확한 연관은 없지만 팁으로 올려둔다.

<tx:annotation-driven />
말 그대로다. 보자마자 의미전달이 된다. 어노테이션으로 트랜젝션을 처리하겠다~ 라는 의미가 바로 전달이 된다.

마지막으로 어노테이션을 보면 메소드 위에 @Transactional 을 붙여서 사용할 수 있다. 자동완성으로 옵션을 살펴보면 아래와 같다.

isolation, noRollbackFor, noRollbackForClassName, propagation, readOnly, rollbackFor, rollbackForClassName, timeout

트랜젝션 관련 옵션들을 설정해주면 된다.

트랜젝션을 AOP 를 통해서 사용하면 편하게 사용할 수 있지만 세세한 설정은 어려울 수 있다. 이럴경우 어노테이션기반으로 좀 더 다양한 옵션을 적용하여 사용하면 깔끔하게 정리가 된다. ㅎ~
토비님의 표현을 빌리자면 감동~ 이라고나 할까나?

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 노르웨이숲 | 2008/02/28 12:20 | Spring | 트랙백 | 덧글(0)

트랙백 주소 : http://purehani.egloos.com/tb/1467673
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

<< 이전 페이지     다음 페이지 >>