본문 바로가기
Spring/JPA

영속성 구성을 위한 mysql 설정

by step 1 2021. 9. 12.
반응형

MySql 설치

MySQL Server 설치 (For Windows, Community) : 네이버 블로그 (naver.com)

 

MySQL Server 설치 (For Windows, Community)

이 설명서는 Windows 운영체제에서 동작하는 MySQL Server Community 8.0.11 버전을 설치하는 방법...

blog.naver.com

 

MySql 실행

시작메뉴에서 commend line client를 실행한 다음에 비밀번호를 입력하면 실행된다.

인테리제이에서 DB 설정

+ 버튼을 클릭하여 MySql을 추가해준다.

 

처음 사용하는 것이라면 드라이버 설치 팝업이 나올텐데 클릭하여 설치를 진행한다.

그 후 아래와 같이 기본 설정을 입력하고 연결 테스트를 진행한다.

 

고급 탭에서 아래와 같이 추가 설정한다.

이름: serverTimezone

값: Asia/Seoul

설정이 되었는지 확인

아래 쿼리를 실행시켜서 정상적으로 출력 되는지 확인

 

application.yml 파일에 database 연결을 해준다.

# mysql 설정        
  datasource:
    url: jdbc:mysql://localhost
    username: root
    password: root

 

gradle 추가

bulid.gradle 파일에서 설정을 추가해주어 다운 받아준다.

// mysql 사용
    runtimeOnly 'mysql:mysql-connector-java'

설정을 해준 다음 확인

아래 코드를 실행하여 정상적으로 실행되는지 확인

콘솔 화면

아래와 같은 text가 찍히는지 확인

org.hibernate.dialect.MySQL8Dialect

 

현재 사용하는 DB 생성

show databases;

create database book_manager;

 

테스트 진행을 위해서 jpa 설정 추가

#  sql문을 확인하기 위해서 추가 설정
  jpa:
    show-sql: true
    properties:
      hibernate:
#        깔끔하게 보기 위해서 설정
        format_sql: true
        show_sql: true
#        주석 확인
        use_sql_comments: true
  # 자동으로 사용되는 entity 테이블을 생성해주는 설정
    generate-ddl: true
  # 자동으로 테이블이 생성되고 제거되도록 설정
    hibernate:
      ddl-auto: create-drop

확인

 

테스트 코드 에러 처리

에러코드: JPA metamodel must not be empty!

해당 코드

package com.example.bookmanager.controller;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.data.jpa.mapping.JpaMetamodelMappingContext;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;


// MVC TEST 진행
@WebMvcTest
class HelloWorldControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    void helloWorld() throws Exception{
        mockMvc.perform(MockMvcRequestBuilders.get("/hello-world"))
                .andDo(print())
                .andExpect(status().isOk())
                .andExpect(content().string("hello-world"));
    }
}
package com.example.bookmanager;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@SpringBootApplication
// Auditing 사용 선언하는 어노테이션
//@EnableJpaAuditing
public class BookmanagerApplication {

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

}

처리방법

1. 상단에 어노테이션 추가: @MockBean(JpaMetamodelMappingContext.class)

2. 별도에 클래스를 생성하여 해결(가장 추천하는 방법)

package com.example.bookmanager.configuration;

import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@Configuration
@EnableJpaAuditing
public class JpaConfiguration {
}

 

반응형

'Spring > JPA' 카테고리의 다른 글

N대N 연관관계 설정 2 (중간테이블을 만들어서 사용하는 방법)  (0) 2021.08.29
N 대 N 연관관계 설정  (0) 2021.08.29
1대N 연관관계  (0) 2021.08.06
1 대 1 관계 설정하는 방법  (0) 2021.07.24
연관 관계 설정 -1  (0) 2021.07.24