에러

Spring Boot와 MySQL 연동 방법

ummchicken 2023. 1. 1. 18:47

내가 까먹을까봐 올림

 

 

application.yml이나 application.properties 파일에 

 

(+ 내가 예전에 구글링하다 yml 보고 이거 뭐야? 했어서 설명 추가함.
이런 거 엄청 간단해서 다들 알 것 같지만, 
나같이 주입식 단기 국비교육받은 사람들은 모를 수도 있음.

 

거기선 이유 안 알려주고 걍 하라고 함.

걍 properties 파일에서 양식만 바꾼 게 yml 파일입니다.
예를 들어, 
properties 파일에선 

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

이었던 게, 

yml 파일에선

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver

이런 식입니다.

들여 쓰기 중요해요!!!)

 

 

암튼 

application.yml 파일에

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/본인이 만든 스키마 이름
    username: 본인 username
    password: 본인 password
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    database: mysql
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        #        show_sql: true
        format_sql: true
        default_batch_fetch_size: 100

  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html

logging:
  level:
    org.hibernate.SQL: debug
#    org.hibernate.type: trace

이거 추가하면 연동됩니다.

username이랑 password는 

본인이 MySQL에서 설정한 대로 해야 합니다.

 

저도 지금 공부 중이라 한줄한줄 알게 되면 그때그때 추가할게요.

 

엄청 기본 중의 기본 말씀 드리면...

MySQL 스키마 만든 거에서 Set as Default Schema 하셔야 하는 거 잊지 마세요! 

지금 이 글 읽을 정도면 아마 초보이거나... 하실 텐데 은근 이거 많이 까먹습니다.

(내가 연습한다고 스키마 엄청 만들어댔다가 까먹은 경험 다수ㅋ)

 

그리고 jpa에서 ddl-auto: create는 서버 재시작할 때마다

데이터베이스 테이블 다 drop 시키고 다시 싹 새로 만드는 겁니다.

그거 싫으시면 아마 create를 none으로 바꾸면 될 거예요. 

안 되면 구글링 하시면 많이 나올 겁니다.

 

thymeleaf는 view페이지예요.

jsp는 

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

이렇게 설정하면 됩니다.

(근데 이건 또 properties 양식ㅋ;;)

view 페이지 당장 안 할 거면, thymeleaf 부분 다 빼도 됩니다.

 

 

 

아 그리고 bulid.gradle에 dependencies {} 안에

implementation 'mysql:mysql-connector-java'

이거 있어야 합니다.

 

 

pom.xml 기준으로는 <dependencies></dependencies> 안에

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>

아마 이거 있어야 할 겁니다? 

(마찬가지로 안 되면 구글링)

 

 

application.yml이나 application.properties에 thymeleaf나 jsp 설정 넣으실 거면, 

build.gradle(Gradle)이나 pom.xml(Maven)에 관련된 설정 추가 하셔야 합니다.

 

 

 

그리고 혹시 연결된 거 바로 확인해보고 싶다면, 

Member.java 파일 하나 만들어서 

import lombok.Getter;
import lombok.Setter;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
@Getter
@Setter
public class Member {

    @Id
    @GeneratedValue
    @Column(name = "member_id")
    private Long id;

    private String password;
    private String name;
    private int age;

}

이거 테스트용으로 MySQL에 들어가지나 보면 됩니다. 

MySQL에 Member 테이블 생성되면 연동된 겁니다.

 

 

아 그리고 @Getter랑 @Setter는 lombok이라는 건데, 

이것도 build.gradle(Gradle)이나 pom.xml(Maven)에 관련된 설정 추가 하셔야 합니다.

만약에 없으면 그냥 Getter랑 Setter 넣으시면 돼요.

 

아마 저건 테스트용이라 굳이 필요 없을 것 같긴 하네요!

 

 

 

- 내가 삽질한 경험으로 올려보는 포스팅 끝 -