[REST API] REST API를 MySQL DB에 연결하기

민지·2024년 3월 19일
0

REST API - Spring Boot

목록 보기
27/27
post-custom-banner

이제, 앞선 포스팅의 인메모리 H2 DB의 내용을 똑같이 MySQL DB에 적용시켜주면 된다!

참고 - 이전에 todo-list 웹 만들 때, 정리해둔 velog

todolist 웹 - MySQL DB 연결 참고

준비단계

/pom.xml 수정

<!-- 
<dependency>
	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>
	<scope>runtime</scope>
</dependency>
-->

<!-- Use this for Spring Boot 3.1 and higher -->
<dependency>
	<groupId>com.mysql</groupId>
	<artifactId>mysql-connector-j</artifactId>
</dependency> 

<!-- Use this if you are using Spring Boot 3.0 or lower
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
	</dependency> 
-->

MySQL을 Docker 컨테이너로 실행

docker run --detach --env 
MYSQL_ROOT_PASSWORD=dummypassword 
--env MYSQL_USER=social-media-user 
--env MYSQL_PASSWORD=dummypassword 
--env MYSQL_DATABASE=social-media-database 
--name mysql 
--publish 3306:3306 
mysql:8-oracle


/src/main/resources/application.properties Modified

#spring.datasource.url=jdbc:h2:mem:testdb
spring.jpa.show-sql=true

<!-- 여기서부터 추가 -->
spring.datasource.url=jdbc:mysql://localhost:3307/social-media-database
spring.datasource.username=social-media-user
spring.datasource.password=dummypassword
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

spring.jpa.hibernate.ddl-auto=update

talend api tester로 /jpa/users와 /jpa/users/{id}/posts에 대한 몇가지 테스트해보기

h2 database와 다르기 MySQL database과 연결되면 data.sql은 실행되지 않기에, 아직 MySQL database에는 그 어떠한 데이터베이스 값도 들어가지 못했다!

그 전에, 아무것도 없던 /jpa/users 에 POST로 데이터 1개를 생성했다.




mysqlsh 명령어

실제로 mysql에 연결이 되었는지 체크하기 위해, 가장 간단하게 mysql 연결하는 방법인 mysqlsh를 사용해보자!

mysqlsh

\connect social-media-user@localhost:3307

use social-media-database

\sql

select * from user_details;
select * from post;
\quit





참고 및 출처
이 시리즈는 Udemy 강의의 내용을 정리한 것입니다.
https://www.udemy.com/course/spring-boot-and-spring-framework-korean/

profile
배운 내용을 바로바로 기록하자!
post-custom-banner

1개의 댓글

comment-user-thumbnail
2일 전

안녕하세요 포스트 잘 봤습니다.
혹시 강의 다음 부분인 풀스택 애플리케이션 구축 부분부터는 포스팅 하지 않은 이유가 있을까요?

답글 달기