이번 Toy project #2에서는 Spring Boot, JPA, MariaDB를 연동해서 프로젝트 설계를 진행했다. 그 과정을 정리하여 다음 프로젝트를 대비하고자 한다. 🌱
Spring Boot + JPA + MariaDB
1. MariaDB 설치
2. MariaDB 공식 홈페이지의 다운로드 페이지 접속
https://mariadb.org/download/?t=mariadb&p=mariadb&r=11.3.0&os=windows&cpu=x86_64&pkg=msi&m=blendbyte
3. 버전, OS, 시스템 종류, 패키지 설정 후 Download
Version : Alpha, RC가 붙은 version을 제외한 최신 version

4. 다운로드한 msi 파일 실행
next → License Agreement 체크 → next → next
5. 사용자 환경 설정
- ✅ Modify password for database user ‘root : root 계정에 대한 비밀번호 수정
- Enable access from remote machines for ‘root’ user : 원격 시스템에서 ‘root’계정 접근에 대한 설정
- ✅ Use UTF8 as default server’s character set : 기본 캐릭터셋(글자)를 UTF8로 설정
6. 데이터베이스 설정
- Install as service : 서비스명 설정 (기본 설정 그대로 유지)
- Enable networking : 포트번호 설정 (기본 설정 그대로 유지) ⇒ 우리팀은 3307로 다운받음
- Buffer pool size : 버퍼 풀 크기 (기본 설정 그대로 유지)
7. 설치 완료
8. dependency 설정
JPA와 MariaDB 의존성을 추가한다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' //JPA가 사용할 DB
9. application.yaml
DB 및 logging 설정을 추가한다.
spring:
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://localhost:3307/toy-project2?createDatabaseIfNotExist=true
username: root
password: 1234
jpa:
show-sql: true
hibernate:
ddl-auto: update
jdbc:
time_zone: Asia/Seoul
config:
import: application-secret.yaml
🚀 Trouble Shooting
⚠️ ERROR 발생 [Error creating bean with name 'entityManagerFactory']
Error 원문
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect') at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598) ~[spring-beans-6.0.13.jar:6.0.13]
- 프로젝트 실행시, 자동으로 해당 class의 이름을 갖는 DB table을 생성하기 위해 SpringBoot + JPA(Hibernate)를 사용했다.
- 하지만, entityManagerFactory bean을 생성할 수 없다는 에러가 났다.
1️⃣ MariaDB Dialect 설정 변경
error 원문을 자세히 확인해보면, ‘Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect')’이란 문장이 있다.
✅ 원인 : 이는 Spring Boot 컨테이너에서 MariaDb Dialect 설정을 찾지 못해서 에러가 생긴 것이다.
✅ 해결법 : application.yaml 에 아래 코드 추가
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.
MariaDBDialect
spring:
'''
jpa:
hibernate:
show-sql: true
ddl-auto: create
properties:
hibernate:
dialect: org.hibernate.dialect.MariaDBDialect
jdbc:
time_zone: Asia/Seoul
⚡ Hibernate-entityManager와 관련된 내용은 다른 post로 대체한다.
2️⃣ createDatabaseIfNotExist=true 추가
1차 원인 변경 이후, java.sql.SQLSyntaxErrorException: Unknown database라는 새로운 에러가 나왔다. 이를 해결하기 위해 새로운 코드를 추가했다.
데이터베이스가 존재하지 않으면 자동으로 생성해주는 코드 추가한다.
✅ 원인 : mariaDB 에 접속할 때, DB가 생성되지 않았다.
✅ 해결법 : createDatabaseIfNotExist=true; 를 추가하여 DB를 생성한다.
🔗 참고 url
spring:
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://localhost:3307/toy-project2?createDatabaseIfNotExist=true
username: root
password: 1234
10. MairaDB 접속 방법
MariaDB설치할 때 같이 설치된 HeidiSQL 사용

🔗 참고 url
https://wecandev.tistory.com/71
https://kitty-geno.tistory.com/55
Uploaded by N2T