inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 DB 1편 - 데이터 접근 핵심 원리

트랜잭션 - 적용2

테스트코드에서 rollback 적용 안됨

835

크아앙

작성한 질문수 2

2

안녕하세요 강의 도중 에러를 해결하지 못해서 질문 남깁니다.

예시 중 이체 중 오류발생 시 롤백하는 테스트를 진행하는데,

throw한 에러를 모두 잡아서 rollback 코드까지는 들어가는데, 결과는 롤백이 안되는 상황입니다.

(memberA가 10000원으로 롤백되어야 하는데 안됨)

 

롤백 코드가 있는 부분은 분명 실행이 된 것이 확인 되는데 막상 결과는 롤백이 되지 않습니다.

 

 

spring

답변 2

0

크아앙

https://drive.google.com/file/d/1ZUpf2qkTbdjnHPOGYmv_bY3Aw2FNFdn4/view?usp=sharing

구글드라이브 링크입니다.

작성한 테스트코드의 MemberServiceV2Test의 이체 중 실패 부분을 실행할 때 롤백이 되지 않는 현상입니다.

 

해당 코드를 그대로 복사해서 사용하는 MebmerServiceV3_1Test 에서는 제대로 진행이 되는 점의 특이합니다.

1

김영한

안녕하세요. 크아앙님

확인해보니 다음 코드가 잘못되어 있었습니다.

MemberServiceV2.bizLogic() 메서드

기존 코드

private void bizLogic(Connection con, String fromId, String toId, int money) throws SQLException {
    Member fromMember = memberRepository.findById(con, fromId);
    Member toMember = memberRepository.findById(con, toId);

    memberRepository.update(fromId, fromMember.getMoney() - money);
    validation(toMember);
    memberRepository.update(toId, toMember.getMoney() + money);
}

변경 코드 - update(con, ...) con을 추가해주세요.

private void bizLogic(Connection con, String fromId, String toId, int money) throws SQLException {
    Member fromMember = memberRepository.findById(con, fromId);
    Member toMember = memberRepository.findById(con, toId);

    memberRepository.update(con, fromId, fromMember.getMoney() - money);
    validation(toMember);
    memberRepository.update(con, toId, toMember.getMoney() + money);
}

감사합니다.

0

크아앙

아 감사합니다!

간단한 파라미터가 빠진건데 죽어도 안보인거였군요..

 

0

김영한

안녕하세요. 크아앙님

먼저 전체 테이블을 삭제하고 다시 생성해보시겠어요? 그래도 진행이 안된다면

전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

추가로 다음 내용도 코멘트 부탁드립니다.

1. 실행 방법을 알려주세요.

2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

감사합니다.

spring initialiser 어떤걸 선택해야될지 모르겠어요

0

43

2

트랜잭션 템플릿이 체크예외는 커밋하는 이유가 궁금합니다.

0

56

1

jdbc 학습하다 궁금해서 질문드려요

0

88

1

정상이체와 이체중 예외발생 차이

0

73

2

이번 강의부터가 JDBC 직접 사용 맞나요?

0

91

1

순수한 서비스 계층에 대한 의문???

0

84

2

3_4test, 4test 자동 리소스 안됨

0

62

2

데이터베이스 선택 관련 질문.

0

73

2

after 메서드 사용 유무

0

64

2

데이터베이스 접근 및 DB 락

0

59

1

@SpingBootTest, @TestConfiguration

0

59

1

Read Committed 격리 수준 사용 관련 질문

0

53

1

AopCheck Test 부분의 EnhancerBySpring 확인 법??

0

70

2

커리큘럼 관련 질문

0

79

1

서비서 계층 스프링 프레임워크 사용

0

90

1

validation(toMember)의 위치

0

85

2

데이터 계층에서 서비스 로직의 datasource를 인식하는 방법

0

167

2

member 상수 질문

0

127

2

ctrl + F6 이후로 con 인식이 안 됩니다

0

159

2

DrivenManager 와 Connection 반환에 대한 질문입니다!

0

112

1

섹션5 트랜잭션 템플릿관련 질문(이기종 DB)

0

117

1

세션1 테이블 조회결과 그림은 Redo 로그에 속하나요?

0

104

1

트랜잭션이 필요하지 않은 경우 DB 대신 파일 시스템을 사용하는 것이 더 효율적인가?

0

99

1

강의 14분쯤 Exception 질문

0

117

2