운영환경 transaction 설정 관련 문의 재질문
- 작성자 :
- 오*광
- 작성일 :
- 2017-07-03 10:23:24
- 조회수 :
- 1,537
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
안녕하십니까 아던트컨설팅 오세광 전임입니다.
다름이 아니오라 지난 금요일에 질문 드린 내용의 답변이 이해 되지 않는 부분이 있어서
재질문 드립니다.
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를 이용해서 별도로 기술한 경우
설정이 충돌나지 않는지도 궁금합니다.
바쁘시겠지만 답변 꼭 부탁드리겠습니다.
그럼 수고하십시오.
다름이 아니오라 지난 금요일에 질문 드린 내용의 답변이 이해 되지 않는 부분이 있어서
재질문 드립니다.
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를 이용해서 별도로 기술한 경우
설정이 충돌나지 않는지도 궁금합니다.
바쁘시겠지만 답변 꼭 부탁드리겠습니다.
그럼 수고하십시오.
A
안녕하십니까, 오세광님
표준프레임워크센터입니다.
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 구현을 직접 사용하는 경우에 대해서 트랜잭션을
명시적으로 시작 및 커밋,롤백 해주는 점도 알아주시기 바랍니다.
감사합니다.
표준프레임워크센터입니다.
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 구현을 직접 사용하는 경우에 대해서 트랜잭션을
명시적으로 시작 및 커밋,롤백 해주는 점도 알아주시기 바랍니다.
감사합니다.