MariaDB를 Spring Boot 프로젝트에 연결하는 방법
MariaDB를 Spring Boot 프로젝트에 연결하기 위해서는 많은 방법이 있겠다.
나는 mac 노트북을 사용중이고, 스프링 부트는 maven를 사용하고 있으므로 이 위주로 설명하겠다. 특히, 실제 데이터를 관리할 때에는 MyBatis를 사용하였으므로 MyBatis 연결 및 사용방법까지 적어둔다.
마이바티스(MyBatis) : 마이바티스는 자바(JAVA) 객체와 SQL문 사이의 매핑을 처리하는 역할을 하는 Persistence Framework이다.
이것은 SQL 쿼리를 XML 파일이나 Annotation에 작성하고, 이를 객체로 결과를 반환받거나 파라미터로 전달받을 수 있다.
JDBC를 좀 더 편리하게 사용할 수 있도록 도와주며, 개발자가 SQL을 직접 작성할 수 있어 세밀한 조정이 가능하다.
MariaDB : MariaDB는 MySQL의 개발자인 Michael Widenius가 주도한 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다.
MySQL이 오라클에 인수되면서 MySQL의 오픈 소스 정신을 계승하고자 만든 프로젝트이다.
MariaDB는 MySQL과 호환되는데, 이는 MySQL의 API와 명령을 그대로 사용할 수 있다는 것을 의미한다.
MariaDB는 MySQL보다 더 많은 스토리지 엔진을 제공하고, 더 빠르고, 더 많은 기능을 제공한다.
따라서, 마이바티스는 SQL 쿼리와 자바 객체 사이의 매핑을 도와주며, MariaDB는 실제 데이터를 저장하고 관리하는 역할을 한다.
MariaDB에 접속하기
mysql 설치 및 root 계정의 세팅이 완료된 상태이며, MariaDB가 설치된 상태여야 한다.
터미널 창을 켜서 root 사용자로 접속 한다.
mysql 설치 및 root 계정 세팅 : https://velog.io/@haleyjun/MySQL-Mac%EC%97%90-MySQL-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-M1%EC%B9%A9
MariaDB 설치 : https://mariadb.com/kb/ko/installing-mariadb-on-macos-using-homebrew/
mysql -u root -p
-> mysql 의 root 계정을 만들었을 당시에 입력한 패스워드를 입력 한 후 엔터를 치면 접속된다.
여기서 -u root는 root 사용자로 접속하겠다는 의미이고, -p는 패스워드를 입력하겠다는 의미이다.
사용자 생성 및 권한 부여
아래의 SQL 쿼리를 통해 사용자를 생성하고, 권한을 부여할 수 있다.
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; // 사용자 생성
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost'; // 권한 부여
'username'과 'password'는 원하는 사용자 이름과 패스워드로 변경!데이터베이스 생성
CREATE DATABASE my_database; // 데이터 베이스 생성
여기서 my_database는 원하는 데이터베이스 이름으로 변경해주면 된다.
테이블 생성
USE my_database; // 데이터 베이스 사용 시작 -> 명령어 창 좌측이 'MySQL [my_database]>' 로 바뀐다.
CREATE TABLE 테이블명 (
//...칼럼 정의... => 테이블 생성
);
터미널 창에서 테이블을 생성해도 되고, 나중에 생성해도 된다.
pom.xml에 MariaDB JDBC 드라이버를 추가해야 한다.

<dependencies>코드 내에 넣어준다. <!-- MariaDB -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.3.2</version>
</dependency>src/main/resources/application.properties 파일인 경우spring.datasource.url=jdbc:mariadb://localhost:3306/my_database
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=org.mariadb.jdbc.Driversrc/main/resources/application.yml 파일인 경우spring:
datasource:
url: jdbc:mariadb://localhost:3306/my_database
driver-class-name: org.mariadb.jdbc.Driver
username: root
password: 1234여기서 my_database, username, password는 앞서 MariaDB에서 생성한 데이터베이스 이름, 사용자 이름, 패스워드로 변경해준다.UserMapper.xml 파일을 생성하고 SQL 쿼리를 작성할 수 있다.<mapper namespace="com.example.demo.mapper.UserMapper">
<update id="createTable">
CREATE TABLE Users (
id INT AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(100),
PRIMARY KEY (id)
);
</update>
</mapper>
이제 Spring Boot 애플리케이션을 실행하면, MariaDB에 연결되고 지정한 SQL 쿼리가 실행된다.
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>mybatis.mapper-locations=classpath:mappers/*.xmlsrc/main/resources/application.properties 파일인 경우mybatis.mapper-locations=classpath:mybatis/mybatis-config.xmlsrc/main/resources/application.yml 파일인 경우spring:
mybatis:
config-location: classpath:mybatis/mybatis-config.xml
@Configuration
@MapperScan("경로.repository.mapper") // () 안에 적은 경로의 하위 파일들이 모두 @Mapper로 등록되는 것과 같은 효과를 갖는다.
public class DatabaseConfiguration {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.addScript("schema.sql")
.build();
}
@Bean
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
return sessionFactory.getObject();
}
}
출처 : https://mybatis.org/spring/apidocs/reference/org/mybatis/spring/annotation/MapperScan.html