트랜잭션 처리 문제
- 작성자 :
- 송*민
- 작성일 :
- 2021-10-11 09:46:18
- 조회수 :
- 3,675
- 구분 :
- 개발환경 / 3.10
- 진행상태 :
- 완료
Q
두개의 SQL 이 동시에 실행 되었을 때 나중에 실행되는 SQL 에서 오류 발생시 처음 실행된 SQL 이 ROLLBACK 되어야 하는 상황입니다.
테스트를 위해 Egovframework 3.10 에서 기본 생성되는 소스에서 오류가 발행하도록 SQL 을 추가하고 실행하였는데,
첫번째 SQL 이 그대로 COMMIT 이 되고 있습니다.
어느 부분을 손봐야 2개의 SQL 이 모두 ROLLBACK 되는지 문의 드립니다.
<테스트 준비>
1. 메뉴에서 New Template Project - Enterprise Business 로 샘플 소스 생성
2. 한개 Controller 에서 2개 SQL 을 순차적으로 실행하도록 아래 절차대로 소스 추가
<테스트 내용>
1. 내부시스템관리 - 공통코드관리 화면의 등록화면 에서 테스트
2. 테스트용 TABLE 을 생성하고 Data type 이 다른 값을 입력하여 오류 발생하도록 sql 생성
3. EgovCcmCmmnCodeManageController 소스의 insertCmmnCode 끝부분에 오류가 발생되도록 테스트 소스 추가
4 신규 공통코드 등록 실행
<테스트 결과>
1. 추가 입력한 공통코드는 그대로 테이블에 COMMIT 됨
2. 추가된 오동작 SQL 은 오류 발생 로그 출력
관련 소스 및 에러 로그는 파일로 첨부합니다.
(기본 생성되는 context-transaction.xml 파일도 같이 첨부합니다)
테스트를 위해 Egovframework 3.10 에서 기본 생성되는 소스에서 오류가 발행하도록 SQL 을 추가하고 실행하였는데,
첫번째 SQL 이 그대로 COMMIT 이 되고 있습니다.
어느 부분을 손봐야 2개의 SQL 이 모두 ROLLBACK 되는지 문의 드립니다.
<테스트 준비>
1. 메뉴에서 New Template Project - Enterprise Business 로 샘플 소스 생성
2. 한개 Controller 에서 2개 SQL 을 순차적으로 실행하도록 아래 절차대로 소스 추가
<테스트 내용>
1. 내부시스템관리 - 공통코드관리 화면의 등록화면 에서 테스트
2. 테스트용 TABLE 을 생성하고 Data type 이 다른 값을 입력하여 오류 발생하도록 sql 생성
3. EgovCcmCmmnCodeManageController 소스의 insertCmmnCode 끝부분에 오류가 발생되도록 테스트 소스 추가
4 신규 공통코드 등록 실행
<테스트 결과>
1. 추가 입력한 공통코드는 그대로 테이블에 COMMIT 됨
2. 추가된 오동작 SQL 은 오류 발생 로그 출력
관련 소스 및 에러 로그는 파일로 첨부합니다.
(기본 생성되는 context-transaction.xml 파일도 같이 첨부합니다)
환경정보
-
- OS 정보 : Windows 64bit
- 표준프레임워크 버전 : 3.10
- JDK(JRE) 정보 : 1.8
- WAS 정보 : Tomcat 9.0.46
- DB 정보 : Oracle 11g
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터 입니다.
context-transaction.xml 설정파일을 보시면
트랜잭션이 다음과 같은 조건으로
설정되어 있는것을 확인하실수 있습니다.
*Impl.*(..))
이것의 의미는 클래스 파일이 Impl로 끝나는 것을
트랜잭션 처리한다는 것을 의미합니다.
따라서
첨부와 같이 Controller에서 다수의 서비스 메소드를 호출 하지 말고
Service 단에서 다수의 DAO를 호출 하는식으로
구성하셔야 할듯 합니다.
감사합니다.
표준프레임워크센터 입니다.
context-transaction.xml 설정파일을 보시면
트랜잭션이 다음과 같은 조건으로
설정되어 있는것을 확인하실수 있습니다.
*Impl.*(..))
이것의 의미는 클래스 파일이 Impl로 끝나는 것을
트랜잭션 처리한다는 것을 의미합니다.
따라서
첨부와 같이 Controller에서 다수의 서비스 메소드를 호출 하지 말고
Service 단에서 다수의 DAO를 호출 하는식으로
구성하셔야 할듯 합니다.
감사합니다.