Transaction 관련 질문드립니다.
- 작성자 :
- 김*연
- 작성일 :
- 2014-09-01 13:04:35
- 조회수 :
- 754
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
eGovFrame3.0 버전을 사용하고 있습니다.
Sample 프로젝트를 생성해서 context-transaction.xml 파일을 살펴보니
아래와 같이 되어 있습니다.
<tx:method name="*" rollback-for="Exception"/>
이 경우 SELECT 쿼리도 모두 Transaction을 건다는 의미가 맞나요?
SELECT 할때도 Transaction을 걸면 DB 성능에 문제는 없나요?
참고로 MySQL 로 개발하고 있습니다.
늘 행복하세요..^^
Sample 프로젝트를 생성해서 context-transaction.xml 파일을 살펴보니
아래와 같이 되어 있습니다.
<tx:method name="*" rollback-for="Exception"/>
이 경우 SELECT 쿼리도 모두 Transaction을 건다는 의미가 맞나요?
SELECT 할때도 Transaction을 걸면 DB 성능에 문제는 없나요?
참고로 MySQL 로 개발하고 있습니다.
늘 행복하세요..^^
A
안녕하세요. 김부연님.
전자정부 표준프레임워크 내에서는 AOP 방식을 이용한 Transaction 방식을 디폴트로 제공하고 있습니다.
그에따라 확인하신 context-transaction.xml을 보시면 <aop:config> 태그에서 pointcut 을 imple 클래스로 지정하여, 실제 비즈니스 로직 처리 단위인 service 수행 단위로 트랜잭션을 처리하고 있습니다.
위와 같은 방식에서는 말씀 주신바와 같이 select 쿼리도 transaction 에 포함 될 가능성이 있습니다.
상황에 따라서는 말씀 주신바와 같이 매소드 별로 트랜잭션 방식을 분리하여 적용 할 경우 일부 성능 향상이 있을수도 있습니다.
그러한 경우에는 select 문을 처리하는 매소드의 경우 별도 설정을 추가하여 적용하실 수 있습니다.
(ex: <tx :method name='’get*" propagation="REQUIRED" read-only="true" timeout="30" /) )
그럼 오늘도 좋은하루 보내시기 바랍니다.
감사합니다.
전자정부 표준프레임워크 내에서는 AOP 방식을 이용한 Transaction 방식을 디폴트로 제공하고 있습니다.
그에따라 확인하신 context-transaction.xml을 보시면 <aop:config> 태그에서 pointcut 을 imple 클래스로 지정하여, 실제 비즈니스 로직 처리 단위인 service 수행 단위로 트랜잭션을 처리하고 있습니다.
위와 같은 방식에서는 말씀 주신바와 같이 select 쿼리도 transaction 에 포함 될 가능성이 있습니다.
상황에 따라서는 말씀 주신바와 같이 매소드 별로 트랜잭션 방식을 분리하여 적용 할 경우 일부 성능 향상이 있을수도 있습니다.
그러한 경우에는 select 문을 처리하는 매소드의 경우 별도 설정을 추가하여 적용하실 수 있습니다.
(ex: <tx :method name='’get*" propagation="REQUIRED" read-only="true" timeout="30" /) )
그럼 오늘도 좋은하루 보내시기 바랍니다.
감사합니다.