1. ๋ก์ปฌ ํ๊ฒฝ ๊ตฌ์ฑ
1) build.gradle
dependencies {
// ... ๊ธฐ์กด์ ์๋ ๊ฒ๋ค
runtimeOnly 'com.mysql:mysql-connector-j'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// ... ๊ธฐ์กด์ ์๋ ๊ฒ๋ค
}
- ๊ธฐ์กด ํ์ผ์ ์ ๋ด์ฉ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
2) .gitignore
### local environment
infra/local/dbdata
- ๊ธฐ์กด ํ์ผ์ ์ ๋ด์ฉ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
3) infra/local/docker-compose.yaml
# infra/local/docker-compose.yaml
version: "3.8"
services:
local-db:
image: mysql:8
environment:
MYSQL_DATABASE: score
MYSQL_ROOT_PASSWORD: password
ports:
- 3306:3306
volumes:
- ./dbdata:/var/lib/mysql
local-db-migrate:
image: flyway/flyway:7
restart: always
environment:
- FLYWAY_DB_URL=jdbc:mysql://local-db/score
- FLYWAY_DB_USER=root
- FLYWAY_DB_PASSWORD=password
command: migrate
volumes:
- ../../db/flyway.conf:/flyway/conf/flyway.conf
- ../../db/migration:/flyway/sql
- ์ ํ์ผ ์ถ๊ฐ ํ์๊ธฐ ์ ์ docker ์ค์น๋ฅผ ๋จผ์ ํด์ฃผ์ ์ผ ํฉ๋๋ค.
- ์ค์น ๊ด๋ จ URL์ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
- ์ฐธ์กฐ : ๊ฐ์ธ ๋ธ๋ก๊ทธ
- flyway ๊ด๋ จํ์ฌ ์ค๋ช ํ URL์ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
- ์ฐธ์กฐ : ๊ฐ์ธ ๋ธ๋ก๊ทธ
4) db/flyway.conf
flyway.url=${FLYWAY_DB_URL}
flyway.user=${FLYWAY_DB_USER}
flyway.password=${FLYWAY_DB_PASSWORD}
flyway.encoding=UTF-8
flyway.outOfOrder=true
flyway.validateOnMigrate=true
flyway.connectRetries=60
flyway.connectRetriesInterval=5
5) db/migration/V0__init.sql
CREATE TABLE IF NOT EXISTS student_score (
`student_score_id` BIGINT NOT NULL COMMENT '์ธ์กฐํค' AUTO_INCREMENT,
`exam` VARCHAR(255) NOT NULL COMMENT '์ํ',
`student_name` VARCHAR(255) NOT NULL COMMENT 'ํ์ ์ด๋ฆ',
`kor_score` INT NOT NULL COMMENT '๊ตญ์ด ์ํ ์ ์',
`english_score` INT NOT NULL COMMENT '์์ด ์ํ ์ ์',
`math_score` INT NOT NULL COMMENT '์ํ ์ํ ์ ์',
PRIMARY KEY (`student_score_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS student_pass (
`student_pass_id` BIGINT NOT NULL COMMENT '์ธ์กฐํค' AUTO_INCREMENT,
`exam` VARCHAR(255) NOT NULL COMMENT '์ํ',
`student_name` VARCHAR(255) NOT NULL COMMENT 'ํ์ ์ด๋ฆ',
`avg_score` DOUBLE NOT NULL COMMENT 'ํ๊ท ์ํ ์ ์',
PRIMARY KEY (`student_pass_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS student_fail (
`student_fail_id` BIGINT NOT NULL COMMENT '์ธ์กฐํค' AUTO_INCREMENT,
`exam` VARCHAR(255) NOT NULL COMMENT '์ํ',
`student_name` VARCHAR(255) NOT NULL COMMENT 'ํ์ ์ด๋ฆ',
`avg_score` DOUBLE NOT NULL COMMENT 'ํ๊ท ์ํ ์ ์',
PRIMARY KEY (`student_fail_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- flyway ์ค์ ๊ด๋ จํ์ฌ ์ค๋ช ํ URL์ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
- ์ฐธ์กฐ : ๊ฐ์ธ ๋ธ๋ก๊ทธ
6) src/main/resource/application.yml
spring:
application:
name: dayonetest
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql//localhost:3306/score
username: root
password: password
jpa:
hibernate:
ddl-auto: none
show-sql: true
7) docker ๋ช ๋ น์ด ์ํ
$ cd infra/local
$ docker-compose up -d
- ๋ช ๋ น์ด ์ํ ์ดํ ์๋์ ๊ฐ์ด docker ์ํ์ฌ๋ถ ํ์ธ ๊ฐ๋ฅ
!! ๋ก์ปฌ DB(docker) ์ค์ ๋ฐ JPA ์ฌ์ฉ์ ํ๊ธฐ์ํด์ gradle ์ค์ ์ ์ถ๊ฐํ์์ต๋๋ค.
!! ๋ค์ํธ์์ ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋๋ก ํ๊ฒ ์ต๋๋ค.
2. Github์ผ๋ก ํ์ธ
์ ์ฒด ํ์ผ ํ์ธ(ํ์ฌ ๋ณ๊ฒฝ๋ด์ญ)
[Github]
์ฐธ์กฐ : ์ธํ๋ฐ ๊ฐ์ [์ฅฌ์ฅฌ์ ํจ๊ป ํ๋ฃจ๋ง์ ๋๋ด๋ ์คํ๋ง ํ ์คํธ]
'๐ป FrameWork(ํ๋ ์์ํฌ) > SpringTEST(์คํ๋งํ ์คํธ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3-3 [Mocktio] ํ์ ๊ฒ์ฆ TEST(๋ฉ์๋ ํธ์ถ ์ฌ๋ถ ํ์ธ) (0) | 2024.06.06 |
---|---|
3-2 [Mocktio] ๊ฐ๋จํ ์ฑ์ ์ ์ฅ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌํ (0) | 2024.06.04 |
2-4 [Junit] ํ ์คํธ ๋ฐ๋ณต ๋ฐ ์ ๋ ฅ๊ฐ ๋ค์ํ๊ฒ ์ค์ (0) | 2024.06.03 |
2-3 [Junit] ํ ์คํธ์ ์ด๋ฆ๋ถ์ด๊ธฐ (0) | 2024.06.03 |
2-2 [Junit] Assertions ๋ฉ์๋ (0) | 2024.06.02 |