inflearn logo
강의

Course

Instructor

Real-world! Spring Boot and JPA Utilization 1 - Web Application Development

testMember 시 insert가 안 되는 문제

879

nahyeon

3 asked

0

testMember에서 table은 생성이 되는데 값이 insert가 안 됩니다.

구글링을 해도 이유를 모르겠어서 질문 드립니다.

[directory 구조]

스크린샷 2023-09-05 오전 4.38.50.png

[Member.java]스크린샷 2023-09-05 오전 4.28.25.png

[Repository]

스크린샷 2023-09-05 오전 4.28.37.png

[MemberRepositoryTest]

스크린샷 2023-09-05 오전 4.30.02.png스크린샷 2023-09-05 오전 4.30.16.png

[application.yml]

스크린샷 2023-09-05 오전 4.33.41.png

[build.gradle]

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.1.3'
	id 'io.spring.dependency-management' version '1.1.3'
}

group = 'com.jpabook'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-devtools'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

	testImplementation("org.junit.vintage:junit-vintage-engine") {
		exclude group: "org.hamcrest", module: "hamcrest-core"
	}
}

tasks.named('test') {
	useJUnitPlatform()
}

test {
	useJUnitPlatform()
}

 

[실행 후 DB]

스크린샷 2023-09-05 오전 4.38.01.png

 

아래의 log를 보면 create 쿼리가 날라가는 것은 확인 되지만 insert query는 보이지 않습니다.

[log]

:: Spring Boot :: (v3.1.3)

2023-09-05T04:30:50.821+09:00 INFO 49729 --- [ restartedMain] com.jpabook.jpabook.JpabookApplication : Starting JpabookApplication using Java 17.0.6 with PID 49729 (/Users/innahyeon/study/jpabook/build/classes/java/main started by innahyeon in /Users/innahyeon/study/jpabook)

2023-09-05T04:30:50.822+09:00 INFO 49729 --- [ restartedMain] com.jpabook.jpabook.JpabookApplication : No active profile set, falling back to 1 default profile: "default"

2023-09-05T04:30:50.841+09:00 INFO 49729 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable

2023-09-05T04:30:50.841+09:00 INFO 49729 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'

2023-09-05T04:30:51.061+09:00 INFO 49729 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.

2023-09-05T04:30:51.068+09:00 INFO 49729 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 4 ms. Found 0 JPA repository interfaces.

2023-09-05T04:30:51.294+09:00 INFO 49729 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)

2023-09-05T04:30:51.298+09:00 INFO 49729 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]

2023-09-05T04:30:51.298+09:00 INFO 49729 --- [ restartedMain] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.12]

2023-09-05T04:30:51.320+09:00 INFO 49729 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext

2023-09-05T04:30:51.321+09:00 INFO 49729 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 480 ms

2023-09-05T04:30:51.331+09:00 INFO 49729 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...

2023-09-05T04:30:51.387+09:00 INFO 49729 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:tcp://localhost/~/jpastudy1 user=SA

2023-09-05T04:30:51.388+09:00 INFO 49729 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.

2023-09-05T04:30:51.392+09:00 INFO 49729 --- [ restartedMain] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:tcp://localhost/~/jpastudy1'

2023-09-05T04:30:51.435+09:00 INFO 49729 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]

2023-09-05T04:30:51.460+09:00 INFO 49729 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.2.7.Final

2023-09-05T04:30:51.461+09:00 INFO 49729 --- [ restartedMain] org.hibernate.cfg.Environment : HHH000406: Using bytecode reflection optimizer

2023-09-05T04:30:51.511+09:00 INFO 49729 --- [ restartedMain] o.h.b.i.BytecodeProviderInitiator : HHH000021: Bytecode provider name : bytebuddy

2023-09-05T04:30:51.568+09:00 INFO 49729 --- [ restartedMain] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer

2023-09-05T04:30:51.660+09:00 INFO 49729 --- [ restartedMain] o.h.b.i.BytecodeProviderInitiator : HHH000021: Bytecode provider name : bytebuddy

2023-09-05T04:30:51.882+09:00 INFO 49729 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]

2023-09-05T04:30:51.887+09:00 DEBUG 49729 --- [ restartedMain] org.hibernate.SQL :

drop table if exists member cascade

Hibernate:

drop table if exists member cascade

2023-09-05T04:30:51.889+09:00 DEBUG 49729 --- [ restartedMain] org.hibernate.SQL :

drop sequence if exists member_seq

Hibernate:

drop sequence if exists member_seq

2023-09-05T04:30:51.891+09:00 DEBUG 49729 --- [ restartedMain] org.hibernate.SQL :

create sequence member_seq start with 1 increment by 50

Hibernate:

create sequence member_seq start with 1 increment by 50

2023-09-05T04:30:51.892+09:00 DEBUG 49729 --- [ restartedMain] org.hibernate.SQL :

create table member (

id bigint not null,

username varchar(255),

primary key (id)

)

Hibernate:

create table member (

id bigint not null,

username varchar(255),

primary key (id)

)

2023-09-05T04:30:51.895+09:00 INFO 49729 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'

2023-09-05T04:30:51.926+09:00 WARN 49729 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning

2023-09-05T04:30:51.975+09:00 INFO 49729 --- [ restartedMain] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]

2023-09-05T04:30:52.047+09:00 INFO 49729 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729

2023-09-05T04:30:52.061+09:00 INFO 49729 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''

2023-09-05T04:30:52.066+09:00 INFO 49729 --- [ restartedMain] com.jpabook.jpabook.JpabookApplication : Started JpabookApplication in 1.393 seconds (process running for 1.638)

 

java spring 웹앱 spring-boot jpa 김영한

Answer 1

0

y2gcoder

안녕하세요. nahyeon.in11님, 공식 서포터즈 y2gcoder입니다.

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

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

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

https://bit.ly/3fX6ygx


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


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

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명

감사합니다.

0

nahyeon

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

  1. 아래의 MemberRepositoryTest.java 실행

image

  1. 아래와 같이 데이터를 저장하는 코드가 있음에도 테이블이 생성되기만 하고 데이터가 DB에 insert 되지 않습니다. -> 정상적이라면 MemberA가 DB에 insert 되어야 하지만, insert 쿼리가 실행되지 않고 해당 데이터가 DB에 없습니다.

Member member = new Member();
member.setUsername("memberA");

//when
Long savedId = memberRepository.save(member);
Member findMember = memberRepository.find(savedId);

1

nahyeon

안녕하세요.

혹시 JpabookApplicationTest가 없어서 문제가 되었나 싶어 해당 파일을 추가해보았지만 여전히 같은 문제가 발생합니다.

image

https://drive.google.com/file/d/1_5KsNGtiCOgStlV_y_1hM2K-SdasgEqd/view?usp=sharing

도저히 어떤것이 문제인지 모르겠어 질문 드립니다. 감사합니다.

1

y2gcoder

보내주신 코드(마지막 드라이브 파일 기준) 살펴보았습니다.

먼저 불필요한 설정 및 코드부터 정리하겠습니다!

1) JpabookApplicationTest 삭제 => @SpringBootApplication은 이미 src/main/java/com/jpabook/jpabook/JpabookApplication.java에 있기 때문에 필요없습니다!

2) build.gradle 수정 => 강의자료의 스프링 부트 3버전 변경사항을 참고하시는데 어려움을 겪으신 것 같습니다. 아래의 build.gradle을 사용하시면 됩니다!(제공해주신 파일에서 불필요한 것들을 지웠을 뿐입니다.)

*꼭 build refresh (코끼리 새로고침) 해주십쇼!

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.1.3'
	id 'io.spring.dependency-management' version '1.1.3'
}

group = 'com.jpabook'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'

	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'

	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

}

test {
	useJUnitPlatform()
}

3) h2 DB 실행 및 jpashop 데이터베이스 파일 생성 => 이 부분은 하셨으리라 생각합니다. 스프링 부트 3버전이기 때문에 h2 DB 버전을 확인해주십쇼! 2.1.214 버전을 설치 후 실행하셔야 합니다! 만약 1.4.200 버전을 설치하고 데이터베이스를 만드셨다면, 2.1.214 버전 설치 후 실행해주시고, 기존 데이터베이스 파일을 삭제하고 다시 데이터베이스도 만들어주십쇼!

이제 실행하시면 insert 쿼리가 나가는 것을 보실 수 있고,
imageh2 DB 콘솔을 그대로 들어가서 확인해보면,

image보시는 바와 같이 데이터가 제대로 들어간 모습을 볼 수 있습니다.

파이팅입니다!

 

 

 

1

nahyeon

안녕하세요. 보내주신 대로 하니 잘 실행되는 것을 확인했습니다.

정말 감사합니다!

0

y2gcoder

파이팅입니다!

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