[SpringBoot] JPA 사용에 MariaDB 연결하기

2023. 7. 25. 04:27
반응형

지금까지 포스팅에서는 H2 데이터베이스를 연결하여 사용했었는데, 이번에는 RDBMS의 종류인 MariaDB와 연결해보는 작업을 해보도록 하자.

 


MariaDB 준비하기

 

 

docker-compose.yaml

version: "3.7"
services:
  wisefee-database:
    platform: linux/x86_64 #Mac M1칩 사용 제외하고는 주석처리
    image: mariadb:10.11.2
    environment:
      MYSQL_DATABASE: "wisefee-database"
      MYSQL_ROOT_PASSWORD: "1111"
    ports:
      - 3306:3306
    volumes:
      - ./local-mariadb:/var/lib/mysql

필자는 MariaDB를 로컬에서 설치하지 않고 docker를 통해 컨테이너 안에서 데이터베이스를 돌릴 것이므로. docker-compose.yaml 파일을 작성해주었다. 물론 직접 개발 PC에 직접 MariaDB를 설치해서 사용해도 무관하다.

이를 통해 MariaDB 10.11.2를 설치하고, wisefee-database를 생성하여 3306 포트에 열어줄 것이다.

 

여담으로 Docker를 사용하면 협업 시 통일된 개발 환경, 개발 환경과 배포 환경의 일관성 보장, 개발 PC에서 별도의 환경설정 및 기존 개발 도구들과의 충돌을 걱정하지 않아도 된다는 장점이 있다.

 

 

 


패키지 Dependency 추가

 

 build.gradle

group = 'com.sklookiesmu'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '11'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-devtools'
	implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'
    
        /* Database dependency */
        implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
        implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5'
        runtimeOnly 'org.mariadb.jdbc:mariadb-java-client:2.7.4'
        /* Database dependency */
    
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	//JUnit4 추가
	testImplementation("org.junit.vintage:junit-vintage-engine") {
		exclude group: "org.hamcrest", module: "hamcrest-core"
	}

}

build.gradle에 데이터베이스 사용을 위해 필요한 모듈들의 의존성을 추가해준다.

JPA와 Hibernate5 기반의 데이터베이스 사용을 하기 위해서 의존성을 추가해줬으며, 런타임 시 사용될 실제 데이터베이스인 MariaDB를 설치해주었다. 

'org.mariadb.jdbc:mariadb-java-client:2.7.4'는 데이터베이스 연동에 필요한 JDBC 드라이버를 의미한다.

 

 

 


Application 환경 설정하기

 

 application.yml

spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://localhost:3306/wisefee-database?characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: 1111

  jpa:
    database-platform: org.hibernate.dialect.MariaDB103Dialect
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        format_sql: true #To beautify or pretty print the SQL
        show_sql: true #show sql
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

logging:
  level:
    org.hibernate:
      type.descriptor.sql: trace #show parameter binding
      SQL: DEBUG

application.yml 파일은 Spring Boot의 애플리케이션 설정 파일이다.


데이터베이스 설정

 

datasource: 데이터베이스 연결 관련 설정

  • driver-class-name: 사용할 JDBC 드라이버 클래스 이름으로, MariaDB의 JDBC 드라이버 클래스를 사용
  • url: 데이터베이스에 접속하기 위한 URL. localhost의 포트 3306에 위치한 "wisefee-database" 데이터베이스에 UTF-8 문자 인코딩과 UTC 시간대를 사용하여 연결
  • username: 데이터베이스에 접속하기 위한 사용자 이름
  • password: 데이터베이스 사용자의 비밀번호

 

JPA 설정

 

jpa: Java Persistence API (JPA) 설정

  • database-platform: 사용할 데이터베이스의 Hibernate dialect를 설정. MariaDB 10.3용 dialect를 사용
  • hibernate: 하이버네이트(Hibernate) 설정을 포함
    • ddl-auto: 스키마 자동 생성에 대한 옵션, "update"는 애플리케이션을 시작할 때 스키마를 생성 또는 업데이트
  • properties: 하이버네이트의 추가 속성을 설정.
    • format_sql: 하이버네이트가 생성한 SQL을 가독성 있게 출력하기 위해 "true"로 설정
    • show_sql: 실행되는 SQL 쿼리를 로그로 출력하기 위해 "true"로 설정

 

 

 

 


Domain Model 생성 후 실행

 

다음과 같이 도메인 모델들을 생성한 후, MariaDB에 접속하여 스키마가 생성되었는지 확인해보자.

 

 

 

데이터베이스와 스키마가 모두 잘 생성되었다면 연결 성공!, 이제 MariaDB 데이터베이스와의 연동이 완료된 것이다.

반응형

BELATED ARTICLES

more