[SpringBoot] JPA 사용에 MariaDB 연결하기
지금까지 포스팅에서는 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 데이터베이스와의 연동이 완료된 것이다.
'Backend > Spring' 카테고리의 다른 글
[SpringBoot] Spring Security JWT 인증과 인가 - (1) 회원 가입 (0) | 2023.08.14 |
---|---|
[SpringBoot] API 문서 생성 - Swagger 연동하기 (SpringFox) (0) | 2023.07.25 |
[SpringBoot] 상품 주문과 동시성 제어 (트랜잭션 격리 수준, 공유락과 베타락) (0) | 2023.05.10 |
[Spring Boot/JPA] 영속성 컨텍스트와 준영속 컨텍스트 (0) | 2023.05.09 |
[SpringBoot] Repository/Service/Controller 계층 개발 (0) | 2023.05.09 |