[SPRING] Spring @ Transactional 및 JDBC autoCommit
SPRINGSpring @ Transactional 및 JDBC autoCommit
내 실제 응용 프로그램에서 JDBC autoCommit = false 집합이없는 DBCP 연결 풀이 있습니다. 기본 autoCommit = true 인 것 같습니다. 이것은 아마도 실수이지만이 매개 변수를 변경하면 미치는 영향을 이해하고 싶습니다.
나는 다음을 사용하고있다 : - @Transactional 주석이있는 봄 - JDBC 판독기와 작성기, JdbcTemplate을 사용하는 최종 사용자 정의 작업 릿을 사용한 Spring 배치
나는 Spring이 TransactionManager가 처리하는 트랜잭션의 문맥에있는 경우 현재 연결에서 autoCommit = false를 설정했는지 알고 싶습니다. 기본 설정보다 우선 적용됩니까? 그것이 나에게 보이는 것처럼 그렇게하는 것이 합리적입니다.
해결법
-
==============================
1.PlatformTransactionManager는 인터페이스이므로, 모든 구현체가 AutoCommit = false를 설정한다고 말하지만, 가장 일반적인 구현체 (DataSourceTransactionManager)는 AutoCommit = false를 설정합니다. 아래의 코드 스 니펫을 doBegin 메소드에서 확인하십시오.
PlatformTransactionManager는 인터페이스이므로, 모든 구현체가 AutoCommit = false를 설정한다고 말하지만, 가장 일반적인 구현체 (DataSourceTransactionManager)는 AutoCommit = false를 설정합니다. 아래의 코드 스 니펫을 doBegin 메소드에서 확인하십시오.
if (con.getAutoCommit()) { txObject.setMustRestoreAutoCommit(true); if (logger.isDebugEnabled()) { logger.debug("Switching JDBC Connection [" + con + "] to manual commit"); } con.setAutoCommit(false); } txObject.getConnectionHolder().setTransactionActive(true);
이제 명시한 바와 같이 롤백을 활성화하기 위해 롤백 세그먼트가 없거나 롤백 세그먼트를 사용하지 않는 것이 좋습니다.
from https://stackoverflow.com/questions/16301315/spring-transactional-and-jdbc-autocommit by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 임베디드 ActiveMQ의 시작 오류 : 임시 저장소 제한은 51200MB입니다. (0) | 2019.02.14 |
---|---|
[SPRING] Spring MVC - 요청 매핑, 두 개의 다른 매개 변수가있는 두 개의 URL (0) | 2019.02.14 |
[SPRING] Spring @autowired는 non-singleton 컨테이너가 아닌가요? (0) | 2019.02.14 |
[SPRING] Thymeleaf / Spring MVC - Link 표현식에서 변수 / 표현식을 중첩하는 방법은 무엇입니까? (0) | 2019.02.14 |
[SPRING] Spring MVC는 컨트롤러간에 같은 객체를 전달한다. (0) | 2019.02.14 |