해결된 질문
작성
·
261
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
'예제 도메인 모델과 동작확인' 테스트 과정에서 @Rollback(false)가 동작하지 않아 h2 데이터베이스에 테이블이 생성되지 않습니다.
application.yml
spring:
datasouce:
url: jdbc:h2:tcp://localhost/~/datajpa
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
logging.level:
org.hibernate.SQL: debug
# org.hibernate.type: trace
MemberTest.java
@SpringBootTest
@Transactional
@Rollback(value = false)
class MemberTest {
@PersistenceContext
EntityManager em;
@Test
public void testEntity(){
Team teamA = new Team("teamA");
Team teamB = new Team("teamB");
em.persist(teamA);
em.persist(teamB);
Member member1 = new Member("member1", 10, teamA);
Member member2 = new Member("member2", 20, teamA);
Member member3 = new Member("member3", 30, teamB);
Member member4 = new Member("member4", 40, teamB);
em.persist(member1);
em.persist(member2);
em.persist(member3);
em.persist(member4);
em.flush();
em.clear();
List<Member> members = em.createQuery("select m from Member m", Member.class).getResultList();
for (Member member : members) {
System.out.println("member = " + member);
System.out.println("member -> " + member.getTeam());
}
}
}
답변 1
0
안녕하세요. 김재원님, 공식 서포터즈 y2gcoder입니다.
혹시 해당 테스트 코드 실행 시 다시 애플리케이션을 실행하거나, 테스트코드를 실행하지 않은 상태이십니까?
실행중인 h2 DB에서 application.yml 로 접속하셨습니까?
위의 두 가지를 확인해보시겠습니까?
spring:
datasouce:
url: jdbc:h2:tcp://localhost/~/datajpa
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
logging.level:
org.hibernate.SQL: debug
# org.hibernate.type: trace
위의 설정에서 spring.jpa.hibernate.ddl-auto: create 으로 해주면 테스트 코드를 실행하거나, 애플리케이션을 실행할 때마다 spring.datasource.url 에 있는 db 테이블들을 지웠다가 다시 생성하기 때문입니다!
감사합니다.
안녕하세요.
테스트 코드를 실행 했습니다.
테스트 코드 결과는 정상으로 나타납니다.
H2는 실행되고 있습니다.
로그 상에서 db 테이블들을 지웠다가 다시 생성되는 쿼리가 확인 됩니다.
위 내용들을 다시 확인 했습니다. 그래서 아래와 같은 조치들을 해봤습니다.
application.yml 설정 재확인 결과 이상 없음
인텔리제이 롬복 설정 재확인 결과 이상 없음
Insert문 로그로 재확인 이상 없음
그러나 문제를 해결하지 못했습니다. 다음으로 조치해볼 수 있는 것들이 뭐가 있을까요?