Spring
(@Scheduled 관련) 스케쥴러 관련 메소드안에 JPA 저장하는 메서드가 같이 있을 경우 저장이 안되는 오류
쿠카이든
2023. 8. 24. 11:59
728x90
- 스케쥴러 메소드안에 JPA 저장하는 메서드가 같이 있을 경우, 저장이 안되는 오류가 발생하였다.



- 스케쥴러가 돌면서 JPA의 프록시에 있는 값에 영향을 준다(프록시 초기화)고 한다.
- 또한, 트랜잭션 매니저가 @EnableTransactionManagement를 통해 DataSourceTransactionManager로 구성된 경우, 하이버네이트의 begin() 메소드가 AbstractTransactionImpl을 부르지 않는다고 한다.
- 해결 → @Scheduled 클래스와 @Transacional이 있는 xxService를 분리하여 해결한다.
//예제
class schedule {
@Schedule
go() {
service.call();
}
}
@Transactional
class xxService {
call() {...};
}
- 스케쥴러와 트랜잭션이 가진 프록시가 분리됨으로써 문제가 해결됨을 볼 수 있었다.

@Scheduled 사용 시 @Transactional 메소드 사용 실패 관련 - 인프런 | 질문 & 답변
안녕하세요, 강의 잘 듣고 있습니다!!JPA 사용 중에 강의만으로는 어려운 문제를 만나 문의드립니다!JPA 트랜잭션에 대한 오류인것 같고 꽤 오래 찾아았으나, 아직 답을 찾지 못했습니다.현상은 @S
www.inflearn.com
728x90