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

이규훈님의 프로필 이미지
이규훈

작성한 질문수

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

엔티티 클래스 개발2

H2 테이블 미생성 및 임베디드 모드 실행되는 이유

해결된 질문

작성

·

239

·

수정됨

1


[질문 내용]

안녕하세요 현재 H2 테이블을 이 생성되지 않고 있습니다. 관련 질문들을 찾아봐서 update에서 create로 바꿔봐도 안되고 있느데 문제를 모르겠습니다.

SprongBoot Applicaton에 @EnitityScan을 하여도 생성아 안되고 있습니다.

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/jpashop
    username: sa
    password:
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        show_sql: true
        format_sql: true
logging.level:
  org.hibernate.SQL: debug
  org.hibernate.type: trace


이렇게 DB도 생성이 되었고 커넥션도 문제가 없습니다.

@SpringBootApplication
@EntityScan(basePackages = "jpabook.jpashop.domain")
public class JpashopApplication {

    public static void main(String[] args) {
       SpringApplication.run(JpashopApplication.class, args);
    }

}


위에서 말한 것처럼 EnitityScan을 하였는데도 테이블이 생성이 안되어서 진행을 못하고 있습니다. 문제가 어디에 있는것 일까요?

파일 디렉토리 구조는 다음과 같습니다.

 


  • 추신: 현재 로그를 보니 H2가 임베디드로 실행되는거같은데 Gradle에도 runtimeOnly라고 잘 적어놨습니다. 이유를 도저히 모르겠습니다.

2024-03-12T20:56:51.434+09:00 INFO 5352 --- [ restartedMain] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:6f48c70e-23df-4595-9e73-2ad1be4993e1'

 

아래는 제 Gradle 코드입니다.

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.3'
    id 'io.spring.dependency-management' version '1.1.4'
}
group = 'jpashop'

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-validation'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    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'
//JUnit4 추가
    testImplementation("org.junit.vintage:junit-vintage-engine") {
       exclude group: "org.hamcrest", module: "hamcrest-core"
    }
    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'
}
test {
    useJUnitPlatform()
}

도움을 주신 다면 감사하겠습니다.

답변 1

0

안녕하세요. 이규훈님, 공식 서포터즈 OMG입니다.

@EntityScan은 현재 상황에서 원인 파악을 하기위한 요소 중 방해요소여서 제거하고 확인 부탁드립니다.


콘솔에 출력된 h2의 url이 올리신 설정파일과 차이가 있네요.

 

2024-03-12T20:56:51.434+09:00 INFO 5352 --- [ restartedMain] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:6f48c70e-23df-4595-9e73-2ad1be4993e1'

다음 3개 정보를 확인해보시고, 해결이 안될 경우 각 항목에 대해 댓글로 남겨주세요.

(1)애플리케이션 실행 설정(오른쪽 상단 표기)

(2)패키지 내에서 application.yml이 작성된 영역 왼쪽 밑줄 표기 2개 부분 및 application.yml의 캡쳐

(3) 인텔리제이 콘솔 로그 전체 내역

image

감사합니다.

이규훈님의 프로필 이미지
이규훈
질문자

test에는 application.yml 파일이 없습니다.

main의 yml은 다음과같습니다.
image그리고
configuration은 다음과같습니다.
image

캡쳐화면으로 최대한 확인해보려 했는데, 프로젝트를 전반적으로 검토해보지 않는 이상 확인이 어려울 것 같습니다.

 

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

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

https://bit.ly/3fX6ygx

 

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

 

링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

image

applicatoin.yml

->

application.yml

로 변경해주세요 😀

파일 이름이 오타로 인해 스프링이 정상적으로 읽지 못하는 상황이였네요^^

 

이규훈님의 프로필 이미지
이규훈

작성한 질문수

질문하기