@Transactional 했는데 롤백 문구가 안 떠요
311
5 asked
다음과 같이 코드를 실행하면 강의 화면처럼 "Rolled back transaction for test"가 나와야 하는데 그렇지 않고 H2에서도 컬럼만 있는 빈 테이블입니다. 뭐가 문제일까요?
package jpabook.jpashop;
import com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer;
import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberRepositoryTest {
@Autowired
MemberRepository memberRepository;
@Test
@Transactional
public void testMember() throws Exception {
//given
Member member = new Member();
member.setUsername("memeberA");
//when
Long saveId = memberRepository.save(member);
Member findMember = memberRepository.find(saveId);
//then
Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
}
}
Answer 5
2
안녕하세요. sichelmond님, 공식 서포터즈 David입니다.
스프링 6 이후부터는 로그 내용이 변경되었습니다.
먼저, application.yaml 파일의 로그 관련 옵션을 다음과 같이 설정해 주세요.
@Rollback(false)를 제거해 주세요.
그러면 롤백 로그(강의 내 로그 내용과 동일하지 않음)를 확인할 수 있습니다.
logging:
level:
root: trace(또는 debug)// 디버그 레벨이 trace 일 때
TRACE 73338 --- [ Test worker] o.s.t.c.transaction.TransactionContext : Rolled back transaction (1) for test context: ..
// 디버그 레벨이 debug 일 때
DEBUG 73219 --- [ Test worker] o.s.t.c.transaction.TransactionContext : Rolled back transaction (1) for test class ..스프링 6 이후 버전
스프링 6 이전 버전
감사합니다.
0
안녕하세요. 같은 상황에서, 의문점이 있어 질문 남깁니다.
junit4 및 junit5 환경 모두에서
application.yml 파일에 org.hibernate.SQL: debug 설정 시,
롤백 문구가 확인되지 않고, dml 문구가 확인되지 않습니다.
application.yml 파일에 root: debug 설정 시,
변경된 롤백 문구와 dml 문구는 확인이 되는데,
org.hibernate.SQL: debug 로 기대한 로그보다 많은 로그를 확인하게 됩니다.
스프링 6 환경에서 org.hibernate.SQL: debug 의 간추린 로그를 확인하고 싶습니다.
0
혹시 이 부분(롤백 false)이 꼭 화인 되어야 다음 단계가 가능할까요?
0
안녕하세요. sichelmond님, 공식 서포터즈 OMG입니다.
프로젝트 코드 확인해보았습니다.
해당 클래스 파일을 열어서 확인해보니 junit4 관련 의존성을 추가하지 않은 것 같아 build.gradle 확인해보니

추가를 하지 않으셨더라구요.

관련하여 강의 메뉴얼을 참고해주세요
build.gradle 수정 후
코끼리 버튼으로 의존성 갱신을 하신 다음 확인해보시겠어요?
감사합니다.
0
답변 감사합니다! 추가하고 의존성 갱신 후 실행했는데 그대로라서 수정한 파일 다시 공유드립니다!
https://drive.google.com/file/d/1Zgtm9YTS0xY5DFIhPeB-NyiBFXP6Wg9P/view?usp=sharing
0
코드 다시 확인해보았는데, 코드엔 문제가 없습니다.
h2를 실행시킨 상태에서 확인한게 맞을까요?
h2가 실행중인데도 동일한 문제가 발생한다면
jpashop이라는 이름으로 h2를 연결하던 설정을 강의를 참고하여 jpashop2로 생성해서 다시 확인해보시겠어요?
.
application.yml

h2(h2는 초기 설정부터 처음부터 진행)

0
안녕하세요. sichelmond님, 공식 서포터즈 David입니다.
도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.
실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 문제 영역을 실행할 수 있는 방법
2. 문제가 어떻게 나타나는지에 대한 상세한 설명
링크: 공식 서포터즈
링크: 자주하는 질문
감사합니다.
0
문제 영역 실행 방법 :
MemberRepositoryTest.java 파일에서 @Test, @Transactional, @Rollback(false) 확인 후 실행시킵니다.
문제 상세 설명 : 콘솔 창에서 롤백 관련 내용이 안 나옵니다. Rollback(false)가 작동하지 않아 H2에서 MEMBER테이블 확인하면 행(ID, USERNAME)만 뜨고 memberA 데이터가 없습니다.
공유 링크 : https://drive.google.com/file/d/1ZVi_DXU-ZNU0igcaoAQ5IUcMUbhWRp8_/view?usp=drive_link
sdk 설정 오류
0
49
2
오탈자 - @Transactional
0
55
1
src/test/resources 테스트 경로 문제
0
50
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
63
1
MemberRepositoryTest 실행오류
0
81
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
183
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
137
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
51
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
71
1
기본 생성자
0
60
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
100
1
멤버서비스테스트 부분에서 막힙니다.
0
164
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
116
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
118
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
112
1
24분 27초 연관관계 편의 메서드 위치
0
113
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
108
2
빌드 툴, Gradle
0
59
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
76
2
Repository에서 EntityManager 주입 방식 차이
0
88
1
롬복과 사용자 정의 setter 메서드
0
71
1
주문 목록 조회 fetch join 질문드립니다
0
81
1
dirty checking 질문드립니다.
0
81
1
동시성 관련 질문입니다
0
74
1

