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
'Spring' 카테고리의 다른 글
Bean의 Scope 중 싱글톤과 프로토타입의 차이 (0) | 2024.04.19 |
---|---|
@Controller와 @RestController의 차이점 (0) | 2023.03.05 |
PointCut 표현식 정리 (0) | 2023.03.03 |
(스프링 고급편) 스프링 AOP (0) | 2023.03.02 |
SpringBoot + Mybatis 연동하기 (0) | 2023.01.12 |