[SpringBoot] 2024 게시판 만들기 실습 ② - MySQL 연동

SihoonCho·2024년 11월 21일
0
post-thumbnail

※ 읽기에 앞서


본 시리즈는 작성자의 이해와 경험을 바탕으로 실습 위주의 설명을 제공하고자 작성되었습니다.
실습 중심의 이해를 목표로 작성되었기 때문에, 다소 과장되거나 생략된 부분이 있을 수 있습니다.
따라서, 이론적으로 미흡한 부분이 있을 수 있는 점에 유의하시고 양해 부탁드립니다.

또한, Spring Boot 기반의 Backend 개발에 중점을 두고 설명하고 있으므로,
Frontend와 관련된 내용은 별도의 참고자료를 검색/활용하실 것을 권장드립니다.


📌 build.grade


build.grade 의존성 라이브러리 추가

dependencies {
	...
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'	// 추가
	runtimeOnly 'com.mysql:mysql-connector-j'								// 추가
    ...
}

📌 application.properties



📖 application.properties


# MySQL Settings
spring.datasource.url=jdbc:mysql://localhost:3306/myschema?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul
spring.datasource.username=[MySQL계정이름]
spring.datasource.password=[MySQL비밀번호]
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# JPA Settings
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql: true
  • spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
    • 자동 감지가 실패하거나, 올바르지 않은 Dialect가 선택될 때 명시적으로 설정
    • 특정 데이터베이스 버전을 위한 Dialect를 지정하고 싶을 때 명시적으로 설정
      • MySQL 5.x: org.hibernate.dialect.MySQLDialect
      • MySQL 8.x: org.hibernate.dialect.MySQL8Dialect
  • spring.jpa.properties.hibernate.format_sql=true
    • Hibernate가 실행하는 SQL 쿼리를 읽기 쉬운 포맷으로 출력
  • spring.jpa.hibernate.ddl-auto=update: Spring Boot Application에서
    • Hibernate의 DDL(Data Definition Language) 생성 및 동작 방식을 제어하는 설정
    • 데이터베이스 스키마(테이블, 속성 등)의 상태를, Entity 클래스와 동기화
      • none: 데이터베이스 스키마 변경 작업을 수행하지 않음. 수동 관리 필요.
      • validate: 데이터베이스 스키마와 Entity 불일치 시 애플리케이션 실행 오류
      • update: Entity에 맞춰 데이터베이스 스키마 업데이트 (운영 환경 비추천)
      • create: 애플리케이션 실행 시 스키마 삭제 후 새로 생성 (기존 데이터 삭제)
      • create-drop: 애플리케이션 실행 시 스키마 생성, 종료 시 삭제 (테스트 환경에 적합)
  • spring.jpa.show-sql=true
    • Hibernate가 실행하는 SQL 쿼리를 콘솔(로그)에 출력하는 설정
    • 애플리케이션에서 JPA를 통해 데이터베이스와 상호작용할 때,
      생성되고 실행되는 SQL 원시 쿼리를 콘솔(로그)에 표시

📖 MySQL JDBC 설정 옵션


application.properties

spring.datasource.url=jdbc:mysql://[IP]:[포트번호]/[DB스키마]?
useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul
  • useUnicode=true
    • 데이터베이스가 유니코드(UTF-8)로 데이터를 읽고 쓰도록 설정
    • 한글 데이터를 올바르게 처리하기 위해 필수
  • characterEncoding=utf8
    • 데이터베이스와의 통신에 사용할 문자 인코딩을 UTF-8로 설정
    • 한글 데이터를 올바르게 처리하기 위해 필수
  • serverTimezone=Asia/Seoul
    • 서버의 시간대를 대한민국 표준시간(Asia/Seoul)으로 설정
    • 시간 관련 연산에서 정확한 데이터를 보장합니다.
  • allowPublicKeyRetrieval=true
    • MySQL 8.x 버전 이상에서 Public Key Retrieval 문제 방지를 위해 사용
    • MySQL 8.x 버전 이상에서 보안 정책에 따른 옵션으로, 로컬 개발 환경에서 사용
  • useSSL=false
    • SSL 비활성화 (로컬/테스트 환경에서 사용)
    • 로컬 또는 테스트 환경에서는 SSL 설정이 필요하지 않은 경우가 많아 보통 비활성화

📌 MySQL



📖 MySQL Connection Instance 생성



  • Connection Name: ProjectName
  • Store in Vault ... - root - 1234 - OK
    • User: root
    • Password: 1234



  • Test Connection - OK - OK

📖 MySQL Schema 생성






  • ProjectName Instance 연결 (클릭)
  • Create a new schema in the connected server
  • Name: myschema - Apply - Apply - Finish

📖 MySQL Connection Instance Schema 설정




  • ProjectName Instance - 마우스 우클릭 - Edit Connection
  • Default Schema: myschema
  • Test Connection - OK

📖 MySQL 연동 결과 확인


  • 데이터베이스에 다시 접속했을 때, myschema 가 굵은 글씨로 표시되어야 합니다.


본 시리즈는 작성자의 이해와 경험을 바탕으로 실습 위주의 설명을 제공하고자 작성되었습니다.
실습 중심의 이해를 목표로 작성되었기 때문에, 다소 과장되거나 생략된 부분이 있을 수 있습니다.
따라서, 이론적으로 미흡한 부분이 있을 수 있는 점에 유의하시고 양해 부탁드립니다.

또한, Spring Boot 기반의 Backend 개발에 중점을 두고 설명하고 있으므로,
Frontend와 관련된 내용은 별도의 참고자료를 검색/활용하실 것을 권장드립니다.
profile
개발을 즐길 줄 아는 백엔드 개발자

0개의 댓글