hyeonga_code

PreProject_8_SpringBoot 프로젝트 MySQL 연결하기 본문

Project_HYEONGARL

PreProject_8_SpringBoot 프로젝트 MySQL 연결하기

hyeonga 2024. 5. 26. 13:59
반응형

 

 

 

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 안의 데이터를 모두 주석으로 처리한 후 기본 코드만 실행한 상태다.

 

반응형