에디블로그
Engineer's Field Notes

AI 자동화로 매일
한 편씩 쓰는
엔지니어 운영 노트

Claude Code · 자동화 파이프라인 · 사고 회고까지. 잘 굴러간 기록 + 깨진 흔적도 같이 남깁니다.

사람이 할 수 있는 일은,
AI도 할 수 있어야 합니다.
매일 한 편 쓰면서 검증 중.
— 이번 주 가장 많이 읽힌 글 TOP 3
아카이브/TroubleShooting

org.springframework.dao.TransientDataAccessResourceException: Cannot change the ExecutorType when there is an existing transaction 해결방법!

반응형

Batch 프로젝트를 진행중에 아래와 같은 에러 발생하였습니다. Batch 삽질 삽질 삽질

에러 원인을 요약하자면 하나의 트랜잭션 안에서 다른 실행자를 사용할 수 없다라는 내용이다. 자세한 내용을 찾아보니 실행자 타입 문제였다. MybatisPagingItemReader는 실행자 BATCH를 사용하고 있었다. 참조

org.springframework.dao.TransientDataAccessResourceException: Cannot change the ExecutorType when there is an existing transaction

 

 

내가 만든 프로젝트는 Reader에서 MybatisPagingItemReader를 이용해 데이터를 조회하고 Processor에서도 Mapper를 통해 데이터를 조회하는 프로젝트였다.

 

Reader에서 MyBatisPagingItemReader를 사용하여 데이터를 조회한다.

 

Processor에서 Mapper를 이용해 데이터를 조회하고 있다.

 

Reader에서는 MybatisPagingItemReader(excutor type : BATCH)를 쓰고 Processor에서는 Mapper(excutor type : SIMPLE)을 쓰려고 하니 에러 발생하는 것이었다. JPA와 QueryDSL을 도입해야하는 이유가 하나 더 늘었다. 이러한 이유로 SIMPLE 타입인 MybatisCursorItemReader를 사용하여 Processor, Writer 작성하여 배치 테스트 완료하였습니다.

 

대용량 데이터를 처리해야하는 데 MybatisCursorItemReader는 아니다!

 

빠른 시일 내에 JPA와 QueryDSL을 도입하여 수정할 것이다!

반응형

📚 같이 보면 좋은

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 일정액의 수수료를 제공받습니다."