eGovFrame 표준프레임워크 포털

메뉴 건너띄기
상단메뉴 바로가기
본문 바로가기

이 누리집은 대한민국 공식 전자정부 누리집입니다.

본문 영역

적용 지원, FAQ, Q&A 게시판을 통해 기술 문제 해결을 지원합니다.

묻고 답하기

운영환경 transaction 설정 관련 문의 재질문
  • 작성자

    오*광

  • 작성일

    2017-07-03 10:23:24

  • 조회수

    1,928

  • 구분

    개발환경

  • 진행상태

    완료

질문

안녕하십니까 아던트컨설팅 오세광 전임입니다.

다름이 아니오라 지난 금요일에 질문 드린 내용의 답변이 이해 되지 않는 부분이 있어서

재질문 드립니다.

1. 제가 위에 첨부드린 transaction 환경 설정 코드를 보시면

<tx:advice> 부분이 tx:method name="*"인 부분과

method name을 구분하여 insert*, delete*, update* 로 명시한 부분이 중복되어 있는데

저렇게 작성해도 문제가 없는지 궁금합니다. (현재는 위부분 주석있는 상태)

2. tx:method name=으로 명시하는 부분에서 말하는 method가 Service에 있는 메소드명인가요 ?

아니면 DAO에서 부르는 insert("",VO); 등의 메소드인가요 ?

3. tx:method name을 insert*, delete*, update*로 지정할 경우

그 외의 select로 시작하는 메소드를 진행할 경우 트랜잭션이 아예 안걸리는건지

트랜잭션 레벨이 낮게 설정돼서 실행되는건지 궁금합니다.

4. context-transation.xml에서 설정을 하고 나서

소스단에서 PlatformTransactionManager를 이용해서 별도로 기술한 경우

설정이 충돌나지 않는지도 궁금합니다.

바쁘시겠지만 답변 꼭 부탁드리겠습니다.

그럼 수고하십시오.

첨부파일
  • transaction 환경설정 코드.txt [1,674 Byte]

    다운로드
답변

안녕하십니까, 오세광님

표준프레임워크센터입니다.

1번의 경우 <tx:method name='*'/>의 경우는 pointcut expression 에 설정된 execution 옵션에 걸린 모든 메소드에 대해 발생하는

exception에 대해 트랜잭션을 수행하게 됩니다. 두 개 사용 시 컴파일 시 에러가 나지 않을 수 도 있지만,

ioc 에서 bean id는 고유한 속성으로 지정하기 때문에 동일한 id에 대해서는 하나만 선언해주시기 바랍니다.

문제가 일어날 수 있는 범위도 광범위하기 때문에 가급적이면 하나의 bean id를 쓰시기 바랍니다.

2. Exception이 발생하는 곳에 롤백 옵션을 줬기 때문에 Pointcut expression에서 execution 된 경로를 따라

메소드에 걸린 exception에 트랜잭션이 수행됩니다. (ServiceImpl, Dao 상관없이)

AOP 트랜잭션이 어디서 정상적으로 작동하셨느지 보려면 ServiceImp, DAO에서 고의로 Exception 발생 후

trace 상에 AOP,proxy를 통해서 확인 가능합니다.

3. tx:mehod name의 속성에 따라 트랜잭션이 걸립니다.

insert*. delete*, update* 만 걸 경우는 규칙에 맞게

insert or delete or update + * (와일드카드) method만 걸립니다.

다만 tx:method name='*'의 경우 옵션에 따라 각 밴더사 별 DB 중 불필요하게 실행되는 경우도 있습니다.

4., 표준프레임워크는 Programmatic Transaction Management의 경우

Transaction Template이나 TrasactionManager를 가이드를 드리고 있습니다.

Platform TransactionManager의 경우 설정 및 변경 사항에 따라 충돌의 범위가 광범위하기 때문에 가이드 드리기가 어렵습니다.

또한 Platform TransactionManger 구현을 직접 사용하는 경우에 대해서 트랜잭션을

명시적으로 시작 및 커밋,롤백 해주는 점도 알아주시기 바랍니다.

감사합니다.

이 페이지의 구성

묻고 답하기