인프런 커뮤니티 질문&답변

nahyeon.in11님의 프로필 이미지
nahyeon.in11

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

testMember 시 insert가 안 되는 문제

작성

·

694

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)

 

답변 1

0

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

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

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

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

https://bit.ly/3fX6ygx


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


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

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

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

감사합니다.

nahyeon.in11님의 프로필 이미지
nahyeon.in11
질문자

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);
nahyeon.in11님의 프로필 이미지
nahyeon.in11
질문자

안녕하세요.

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

image

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

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

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

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

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보시는 바와 같이 데이터가 제대로 들어간 모습을 볼 수 있습니다.

파이팅입니다!

 

 

 

nahyeon.in11님의 프로필 이미지
nahyeon.in11
질문자

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

정말 감사합니다!

파이팅입니다!

nahyeon.in11님의 프로필 이미지
nahyeon.in11

작성한 질문수

질문하기