hyeonga_code
PreProject_8_SpringBoot 프로젝트 MySQL 연결하기 본문
MySQL을 사용하려고 한다.
이전 프로젝트에서는 팀원들과 작업을 해야 하여 AWS 서버를 열고 RDS를 사용했으나, 개인 작업이므로 로컬 저장소의 DB를 사용하려고 한다.
1. MySql에서 사용하려는 데이터베이스를 생성하고 관리자 계정을 생성한다.
-- 데이터베이스 생성
SHOW DATABASES;
CREATE DATABASE hyeongarl;
-- 관리자 계정 생성
CREATE USER hyeongarl@localhost IDENTIFIED BY 비밀번호;
-- 데이터베이스에 대한 모든 권한 부여
GRANT ALL PRIVILEGES ON hyeongarl.* TO hyeongarl@localhost;
-- 변경 사항 적용
FLUSH PRIVILEGES;
-- 생성된 사용자 확인하기
SELECT user, host FROM mysql.user;
-- 부여된 권한 확인
SHOW GRANTS FOR hyeongarl@localhost;
2. Spring Boot 프로젝트의 build.gradle에 의존성을 추가한다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java:5.1.9'
runtimeOnly 'com.mysql:mysql-connector-j'
}
jpa
Spring Data JPA와 Hibernate를 포함하여 데이터베이스와의 상호작용을 지원하는 라이브러리
com.mysql:mysql-connector-j
MySQL 데이터베이스와의 연결을 위해 필요한 MySQL JDBC 드라이버
3. application.yml 파일 작성하기
src/main/폴더 하위에 resources 폴더를 생성하고 application.yml 파일을 작성한다.
spring:
# DataSource 설정
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver # 드라이버 클래스 이름
url: ${SPRING_DATASOURCE_URL} # 데이터베이스 연결 정보
username: ${SPRING_DATASOURCE_USER} # 계정 이름
password: ${SPRING_DATASOURCE_PASSWORD} # 계정 비밀번호
# JPA 설정
jpa:
database: mysql # 사용할 데이터베이스 종류
database-platform: org.hibernate.dialect.MySQLDialect # Hibernate에서 사용할 dialect
show-sql: true # 실행되는 쿼리를 콘솔에 출력할지 여부
hibernate: # 스키마 생성 및 업데이트 전략을 설정
ddl-auto: update # 애플리케이션 시작 시 데이터베이스 스키마가 업데이트
# create, create-drop, validate, none
properties:
hibernate:
format_sql: true # 출력되는 SQL을 포맷할지 여부 설정
4. application.properties 파일 작성하기
src/main/resources 폴더에 application.properties 파일을 작성한다.
# MySQL Database
SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/hyeongarl
SPRING_DATASOURCE_USER=hyeongarl
SPRING_DATASOURCE_PASSWORD=hyeongarl@45
>>> ApiApplication.java를 실행했는데 처리되지 않고 오류가 계속 발생했다.
IntelliJ에서 DB 연결이 되어 있지 않아 인식하지 못하는 문제가 발생했다.
상단 메뉴 > 보기 > 도구 창 > 데이터베이스
+ > Data Source > MySql 선택
설정 후 보기 > 도구 창 > Persistence > 프로젝트...main 우클릭 > 데이터소스 할당 > 데이터 소스 선택
이후 ApiApplication 실행
sql이 실행되는 것을 볼 수 있다.
또한 데이터베이스에 테이블이 생성된 것을 확인할 수 있다.
test 코드는 따로 데이터베이스를 작성하는 경우가 많다고 한다.
해서 test/폴더에 resources 폴더를 똑같이 생성하고 데이터베이스 이름만 hyeongarl에서 hyeongarl_test로 변경했다.
ApiApplicationTests.java를 실행하니 실행이 잘 되는 것을 볼 수 있다.
현재 기존에 작성했던 Repository 안의 데이터를 모두 주석으로 처리한 후 기본 코드만 실행한 상태다.
'Project_HYEONGARL' 카테고리의 다른 글
Project_01_Spring Boot Gradle Multi Module Project 생성하기 (0) | 2024.05.28 |
---|---|
PreProject_9_JWT 서비스 구현하기(TestCode 작성) (0) | 2024.05.27 |
PreProject_07_Controller Test (TestRestTemplate) (0) | 2024.05.21 |
PreProject_06_Controller (0) | 2024.05.13 |
PreProject_05_ResponseEntity<> (0) | 2024.05.13 |