개인 블로그 만들기(5) : [서버구축] Oracle Cloud Docker MariaDB 연동

2021. 9. 3. 12:45소소한 개발

개인 블로그 만들기(4) : [서버구축] Oracle Cloud Docker MariaDB 연동

* 기록용입니다.

* Ubuntu 버전은 20.04 입니다.

* 무료 프론티어를 사용하고 있습니다.

 

 


1. MariaDB Table 생성

CREATE TABLE test
(  id   varchar(50) NOT NULL PRIMARY KEY,
   name varchar(150) NOT NULL
);

| 간단하게 연동되는 Test용으로 테이블을 생성했습니다.

 

 

 

2. Spring Boot Project

├─java
│  └─com
│      └─jinho
│          └─homepage
│              ├─controller
│              ├─mapper
│              ├─service
│              └─vo
└─resources
    ├─mybatis
    │  └─test
    │    └─testMapper.xml
    ├─static
    └─templates
<dependency>
  <groupId>org.mariadb.jdbc</groupId>
  <artifactId>mariadb-java-client</artifactId>
  <scope>runtime</scope>
</dependency>


(선택)
<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>2.2.0</version>
</dependency>

| pom.xml의 dependency에 위 2개를 추가합니다.

해당 프로젝트에서는 JPA가 아닌, Mybatis를 사용하기때문에 mybatis를 추가했지만 JPA를 사용하려면 JPA관련 dependency를 추가하시면 됩니다.

 

 

2.1 application.yml(application.properties)

spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://(ip주소):3306/(DB주소)?characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: 1234
mybatis:
  mapper-locations: mybatis/**/*.xml

| MariaDB관련 Driver 및 주소 등을 적습니다.

mapper-locations를 통해 mapper 위치를 설정합니다.

 

 

 

2.2 VO 생성

@Data
public class testVo {
    private String id;
    private String name;
}

| test용 Vo를 추가합니다.

테이블명과 동일해야 1:1 매치가 되어서 데이터가 VO안에 담김니다.

 

 

 

2.2 Mapper, Serivce, Controller 생성

@Mapper
@Repository
public interface PageMapper {
    List<testVo> selectTest();
}
@Service
public class PageService {

    private PageMapper pageMapper;

    public PageService(PageMapper pageMapper) {
        this.pageMapper = pageMapper;
    }

    public List<testVo> selectTest(){
        return pageMapper.selectTest();
    }
}
@RestController
public class PageController {

    private PageService pageService;

    public PageController(PageService pageService) {
        this.pageService = pageService;
    }

    @GetMapping("/test")
    public List<testVo> testList(){
        return pageService.selectTest();
    }
}

| Mapper로 사용되는 Class는 Mapper 및 Repository 어노테이션을,

Controller에는 테스트여서 데이터만 확인하기 위해 RestController로 사용했습니다. (뷰 만들기 귀찮아서 그런게 아..ㄴ)

 

 

 

2.3 Mapper.xml 생성

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jinho.homepage.mapper.PageMapper">
    <select id="selectTest"  resultType="com.jinho.homepage.vo.testVo">
        SELECT * FROM test
    </select>
</mapper>

| mapper를 작성해야합니다.

mapper namespace : public interface PageMapper 경로

select id : 쿼리문 id (PageMapper Interface에서 변수명과 같아야 합니다.)

resultType : 데이터를 담을 VO 경로

 

 

 

3. Application 실행 및 데이터 확인

| application을 실행 한 뒤 데이터를 확인해 보았습니다.

오라클 클라우드에 docker로 띄운 MariaDB 테이블에 잘 접속해서 데이터를 꺼내오는 것을 확인할 수 있습니다.

 

> 차후 Application을 오라클 클라우드의 인스턴스에서 구동 후 ip 혹은 도메인으로 외부에서 24시간 돌아가는 홈페이지를 구축해 보겠습니다.