[SpringBoot] 스프링부트 JPA - MySQL, MariaDB 설정하기

반응형

Spring Boot에서 JPA를 사용하면 다양한 데이터베이스를 연결할 수 있습니다. 평소 개발할 때는 H2로 연결해서 개발할 수도 있고 실제 배포에는 오라클이나 MySQL을 이용할 수도 있습니다. MySQL 커뮤니티 버전이 아닌 MariaDB 오픈소스도 MySQL과 사용법은 비슷하지만 JPA 연결 시 드라이버(driver) 설정이 다릅니다. 오늘은 각각 많이 사용하는 MySQL과 MariaDB의 연결 설정에 대해서 알아보겠습니다.

 

MVN Repository 사용시

이미 만들어진 프로젝트에 드라이버와 JPA를 설치하려면 MVN 레파지토리 사이트에서 검색한 후에 그래들 파일에 추가하는 것이 편리합니다.

 

 우선 https://mvnrepository.com 사이트에서 필요한 드라이버를 검색해보겠습니다. 검색창에 mysql 또는 mariadb 라고 검색합니다.

MVN REPOSITORY


 

▼ MySQL Connector를 선택하고 버전에 맞게 선택해줍니다.

MySQL


 

 Maven 또는 Gradle 탭을 선택하고 복사합니다. 이제 이 주소를 Gradle에 붙여 넣고 그래들을 다시 빌드합니다. Maven도 사용법은 비슷합니다.

Gradle 주소


 

 

 

 

IntelliJ 사용 시

 

▼ 만약 인텔리제이를 사용한다면 위와 같은 절차가 필요 없이 바로 다운로드할 수 있습니다. 새로운 프로젝트를 만들고 Next 버튼을 눌러줍니다.

Spring Initializr


 

▼ 프로젝트에 필요한 기본 요소 외에 다음과 같이 JPA와 Driver를 추가합니다. 원하는 데이터베이스에 따라서 MariaDB 또는 MySQL 드라이버를 선택합니다. JPA는 기본적으로 추가해야 합니다.

  • Spring Boot DevTools
  • Lombok
  • Spring Web
  • Spring Data JPA
  • MariaDB Driver
  • MySQL Driver

SQL 관련 의존성 추가


 

▼ 그래들에 드라이버 및 JPA가 잘 등록되어있는지 확인하고 새로 그래들을 빌드해줍니다.

 

 

application.properties 설정 파일 수정

만약 그대로 프로젝트를 실행하면 에러가 발생할겁니다. Spring Data JPA 라이브러리를 추가하면 기본적으로 application.propertis 에서 설정 파일을 확인합니다. 만약 설정 내용이 없다면 앱이 실행되지 않고 예외를 발생하고 종료하게 됩니다.

 

▼ resources > application.properties 파일을 열어줍니다.

application.properties


 

 

▼ 만약 mariadb를 사용한다면 다음과 같이 드라이버에 org.mariadb.jdbc.Driver를 설정하고 나머지 데이터베이스 정보를 입력해줍니다.

 

 

▼ 만약 mysql을 사용한다면 다음과 같이 설정합니다.

 

 

추가적으로 여러 옵션을 설정합니다.

  • spring.jpa.hibernate.ddl-auto : JPA 사용 시 생성 전략 설정 (create, update, create-drop, validate)
  • spring.jpa.properties.hibernate.format_sql : 보여지는 쿼리를 정렬해서 보기 좋게 보여줍니다.
  • spring.jap.show-sql : 하이버네이트가 데이터베이스에 요청하는 모든 쿼리를 보여줍니다.

 

ddl-auto 

보통 라이브 환경에서는 update, validate를 사용하고 개발시에는 create, create-drop을 사용합니다.

  • create : 매번 테이블 생성을 새로 시도합니다.
  • update : 변경이 필요한 경우는 alter 명령이 실행되고, 테이블이 없는 경우 create 명령이 실행됩니다.
  • create-drop : create와 동일하며 SessionFactory가 내려가면 테이블을 drop 시킵니다.
  • validate : update와 동일하게 Object를 검사하지만 스키마는 건드리지 않고 데이터만 변경합니다. 스키마 구조가 다르면 에러를 발생시킵니다.
반응형

댓글

Designed by JB FACTORY