SPRING
실무에서 잘못 사용하고 있던 Transaction
실무 프로젝트 전반에 REQUIRES_NEW가 걸려 있던 원인을 프록시 패턴과 롤백 시점, 컨트롤러에 걸린 AOP 트랜잭션 설정에서 찾아 분석한 과정을 정리합니다.
실무 프로젝트 전반에 REQUIRES_NEW가 걸려 있던 원인을 프록시 패턴과 롤백 시점, 컨트롤러에 걸린 AOP 트랜잭션 설정에서 찾아 분석한 과정을 정리합니다.
@Transactional 안에서 try ~ catch로 예외를 잡으면 롤백이 동작하지 않는 원인을 TransactionAspectSupport와 rollbackOn 내부 동작으로 분석하고, catch에서 Unchecked Exception을 다시 던지는 해결 방법을 정리합니다.
배치에서 Quartz로 실행할 때만 FetchType.LAZY 객체를 불러오지 못하고 LazyInitializationException이 발생한 원인과 해결 방법을 정리합니다.
JPA의 save와 saveAll을 각각 10,000건씩 테스트하여 실행 시간을 비교하고, saveAll이 더 빠른 이유를 프록시 기반 @Transactional 동작 원리로 설명합니다.
JPA 라이브러리와 설정을 추가하고 Member 엔티티 매핑과 EntityManager 기반 리포지토리를 구현한 뒤, SpringConfig의 빈 설정만 바꿔 JDBC 구현체를 JPA로 교체하는 과정을 정리합니다.