배치 관련 문의 드립니다.
- 작성자 :
- 이*호
- 작성일 :
- 2023-03-30 15:38:51
- 조회수 :
- 1,504
- 구분 :
- 운영환경 / 배치운영환경 3.7
- 진행상태 :
- 완료
Q
운영환경 배치 클래스에서 아래와 같이 사용을 하고있습니다.
public class batchProcessorTest implements Tasklet {
private SqlSessionFactory sqlSessionFactory;
private SqlSessionTemplate sqlSessionTemplate;
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
~~
sqlSessionTemplate.insert("trDB.insertAAA", insertVO);
sqlSessionTemplate.insert("trDB.insertBBB", updateVO);
}
배치에서 다건건 처리를 하다보니, 오류 발생시에도 건별 커밋 처리가 필요해서.
sqlSessionFactory.openSession(false); // 오토커밋을 false로 세팅하고.
//수동 커밋 처리를 위해 넣어봤는데,
sqlSessionTemplate.commit();
아래와 같은 오류가 납니다.
java.lang.UnsupportedOperationException: Manual commit is not allowed over a Spring managed SqlSession
구글링을 해보니, 안된다는 의견이 있는데, 처리할 다른 방법이 있다면 가이드를 좀 부탁드립니다.
--------------------
MyBatis의 SqlSessionTemplate 객체는 commit(), rollback() 메소드를 사용할 수 없다. 즉 SqlSessionTemplate 객체를 이용하여 프로그램적으로는 트랜잭션을 관리할 수 없게 한다. 억지로 SqlSessionTemplate 객체의 commit() 메소드를 호출하면 다음과 같은 예외를 발생한다.
-------------------
public class batchProcessorTest implements Tasklet {
private SqlSessionFactory sqlSessionFactory;
private SqlSessionTemplate sqlSessionTemplate;
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
~~
sqlSessionTemplate.insert("trDB.insertAAA", insertVO);
sqlSessionTemplate.insert("trDB.insertBBB", updateVO);
}
배치에서 다건건 처리를 하다보니, 오류 발생시에도 건별 커밋 처리가 필요해서.
sqlSessionFactory.openSession(false); // 오토커밋을 false로 세팅하고.
//수동 커밋 처리를 위해 넣어봤는데,
sqlSessionTemplate.commit();
아래와 같은 오류가 납니다.
java.lang.UnsupportedOperationException: Manual commit is not allowed over a Spring managed SqlSession
구글링을 해보니, 안된다는 의견이 있는데, 처리할 다른 방법이 있다면 가이드를 좀 부탁드립니다.
--------------------
MyBatis의 SqlSessionTemplate 객체는 commit(), rollback() 메소드를 사용할 수 없다. 즉 SqlSessionTemplate 객체를 이용하여 프로그램적으로는 트랜잭션을 관리할 수 없게 한다. 억지로 SqlSessionTemplate 객체의 commit() 메소드를 호출하면 다음과 같은 예외를 발생한다.
-------------------
환경정보
-
- OS 정보 : 윈도우
- 표준프레임워크 버전 :
- JDK(JRE) 정보 :
- WAS 정보 :
- DB 정보 :
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터입니다.
프로그램에서 직접 트랜잭션을 관리하기 위한 방법으로
표준프레임워크에서는 TransactionTemplate과 TransactionManager를
사용하는 방법을 가이드하고 있습니다.
아래 위키가이드 내용이나
표준프레임워크 교육교재 중 [실행환경-데이터처리] 부분을
참고하시기 바랍니다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:psl:transaction:programmatic_transaction_management
감사합니다.
표준프레임워크센터입니다.
프로그램에서 직접 트랜잭션을 관리하기 위한 방법으로
표준프레임워크에서는 TransactionTemplate과 TransactionManager를
사용하는 방법을 가이드하고 있습니다.
아래 위키가이드 내용이나
표준프레임워크 교육교재 중 [실행환경-데이터처리] 부분을
참고하시기 바랍니다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:psl:transaction:programmatic_transaction_management
감사합니다.