본문 바로가기

[스프링 부트 + JPA + MySQL] 간단한 회원 관리 예제로 알아보는 스프링부트 -1탄 DB 설정편

ironwhale 2022. 11. 14.

스프링 부트, JPA, MySQL 사용법 정리 겸 김영한's 스프링 입문 강의 후기

기본적인 자바 문법 공부가 끝나가던 중 문법 공부만하는 것은 공부에 도움이 별로 안된다는 것을 파이썬을 공부하면서 느꼈기 때문에 요새 스프링을 공부하고 있습니다. 공부 교재는 인프런의 김영한님이 무료로 공개하신 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의'를 듣고 제 머릿속에 남기기 위해 정리해보고자 합니다. 

 

 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의'는 깊이 있는 내용보다는 가볍게 작은 프로젝트를 구현해보면서 스프링에대한 전반적인 이해와 많은 흥미를 유발하는 강의인것 같습니다. 강의 시간도 제일 긴것이 20분이이고 대부분 10분 내외로 중간 중간 비는 시간마다 듣기 좋은 거 같습니다. 

 

이 강의를 다 듣게 되면 간단하게 메모장 정도는 만들 수 있을 정도의 강의 입니다. 물론 프론트엔드 강의가 아니기 때문에 화려한 웹 페이지를 만들수 있는 강의는 아닙니다. 

 

스프링 입문 링크

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com


정리 순서

김영한님의 강의를 쭉 듣다 보니 아래와 같은 순서로 스프링 프로젝트가 데이터베이스부터 웹페이지로 나아가는 것을 보였습니다. 그래서 저도 DB부터 웹 화면까지 순서대로 정리해보고자 합니다. 

  1. DB
  2. Repository
  3. Service
  4. Controller
  5. 웹(HTML)

위와 같은 순서로 데이터베이스에서 우리가 사용하는 웹페이지까지 이어지고 의존성 주입(DI)을 통해 연결되어 있습니다. 

 

이번에는 스프링 부트 프로젝트에서 DB 설정에 대해 정리해보겠습니다. 


스프링 부트 프로젝트 DB 설정하기

DB는 MySQL를 사용하고 JPA를 이용하기 위한 설정하는 부분입니다. 

build.gradle 설정

  • mysql 설정: runtimeOnly 'mysql:mysql-connector-java'
  • jpa 설정: implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
	runtimeOnly 'mysql:mysql-connector-java'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}

위와 같이 디펜더시를 설정하면 JPA와 MySQL를 사용할 수 있습니다. 다른 RDBMS를 사용하고 싶으신 분들은 runtimeOnly부분만 바꿔주시면 됩니다. 

 

application.properties 설정

이곳에서 MySQL 서버 주소, 접속 아이디와 비밀번호 JPA 속성을 지정합니다. 아래 코드를 보면 쉽게 이해가 가능 내용이라 자세한 설명을 생략하겠습니다. 

spring.datasource.url=jdbc:mysql://<서버주소>/<DB이름>?characterEncoding=UTF-8&serverTimezone=Asia/Seoul
spring.datasource.username= 아이디
spring.datasource.password= 비밀번호
spring.jpa.show-sql=true // JPA가 생성하는 SQL 출력
spring.jpa.hibernate.ddl-auto=update // 테이블 자동생성 기능

다만, spring.jpa.hibernate.ddl-auto 이 부분은 JPA에서 자동으로 테이블을 생성하는 부분에 대한 설정입니다. 

  • none: 아무것도 하지 않습니다. 이미 테이블이 생성되어 있어야 합니다. 
  • create: 테이블을 자동으로 생성하는데 스프링 서버를 재실행하면 테이블을 지우고 다시 만듭니다. 
  • create-drop: create와 같으나 종료하면 테이블을 삭제합니다. 
  • update: 변경된 스키마를 적용합니다. 테이블을 자동 생성하는데 서버를 재실행해도 테이블을 지우지 않습니다. 
  • validate: 엔티디와 테이블이 정상 매핑되어있는지 확인 

이것에 대해 알아보니 개발 초기 테스트 단계에서는 create, create-drop, update가 유용하지만 실제 서비스 배포 단계에서는 사용하면 안된다고 합니다. 

 

아마 그래서 강의에서도 none으로 설정하고 DB에 테이블을 만들때는 SQL문을 사용해서 직접 테이블을 만든신거 같습니다. 

 


마치며

이번 장에서는 스프링 부트 프로젝트의 첫단계 DB설정을 해보았습니다. 실제 김영한님의 강의에서는 h2 database를 이용해서 작업을 하는데 MySQL로도 가능할 것 같아 정리해보니 잘 동작하였습니다. 다음장에서는 Repository를 만들어 보겠습니다.

 

 

댓글