강의

멘토링

커뮤니티

Inflearn Community Q&A

sts563692236712's profile image
sts563692236712

asked

Spring DB Part 2 - Data Access Utilization Technology

Exceptions and Transaction Commit, Rollback - Utilization

OrderService 트랜잭션 프록시 객체의 형태

Written on

·

81

0

public class OrderService$$EnhancerBySpringCGLIB extends OrderService {

    private final OrderService target; // 실제 대상 객체 (원본 OrderService)
    private final TransactionManager transactionManager; // 트랜잭션 매니저

    
    //의존 관계를 주입 받았다 가정

    @Override
    public void order(Order order) throws Exception {
        TransactionStatus transactionStatus = null;
        try {
            // 트랜잭션 시작
            transactionStatus = transactionManager.beginTransaction();

            // 실제 비즈니스 로직 호출 (OrderService의 order 메서드)
            target.order(order);

            // 정상적으로 완료된 경우 트랜잭션 커밋
            transactionManager.commit(transactionStatus);

        } catch (RuntimeException e) {
            // 언체크 예외(RuntimeException): 자동 롤백
            transactionManager.rollback(transactionStatus);
            throw e; // 예외 다시 던지기

        } catch (Exception e) {
            // 체크 예외: 기본적으로 커밋
            transactionManager.commit(transactionStatus); // 트랜잭션 커밋
            throw e; // 예외를 호출자에게 다시 전달
        }
    }
}

강의에서 생성되는 프록시 객체의 형태는 정확하진 않지만 대략적으로 위와 같다고 생각해도 될까요?

jpa

Answer 1

0

안녕하세요. 최용준님, 공식 서포터즈 y2gcoder입니다.

너무 잘 구현해주셨다고 생각합니다!

추가로 프록시에 대해 더 궁금하시다면 영한님의 스프링 핵심 원리 - 고급편 강의를 수강해보시는 것을 추천합니다! 프록시 패턴 등에 대해 학습하시면 위의 코드를 더 보완해보실 수 있습니다 🙂

감사합니다.

sts563692236712's profile image
sts563692236712

asked

Ask a question