์ด์ ํฌ์คํธ์ ์ด์ด์ง๋ ๋ด์ฉ์ด๋ค.
Spring batch์ h2
์ ๊ฐ์ ์ธ๋ฉ๋ชจ๋ฆฌ db๋ฅผ ์ฌ์ฉํ๋ฉด spring-boot์ด ๋ฉํ๋ฐ์ดํฐ ํ
์ด๋ธ๋ค์ ์๋์ผ๋ก ์์ฑํด์ค๋ค.
ํ์ง๋ง mysql
๊ณผ ๊ฐ์ db๋ฅผ ์ฌ์ฉํ๋ฉด ์ง์ ์์ฑํด์ผ ํ๋ค.
ํธ์๋ฅผ ์ํด mysql์ ubuntu์์ docker container๋ก ๋์ด๋ค.
mkdir ~/db-source
touch ~/db-source/docker-compose.yaml
# db-source
version: '3.1'
networks:
etl-example:
services:
db-source:
image: mariadb:latest
container_name: db-source
restart: always
environment:
TZ: Asia/Seoul
# mysql์ ์ฒ์ ์๋น์คํ ๋์ root password๊ฐ ํ์ํ๋ค.
# ์๋์ ํ๊ฒฝ๋ณ์๋ฅผ ํฌํจํ์ฌ ์ฌ๋ฆฐ ํ ์ง์์ค๋ค.
# MYSQL_ROOT_PASSWORD: ${PASSWORD}
networks:
- etl-example
ports:
- 3306:3306
volumes:
- /data/db/data:/var/lib/mysql
- /data/db/config:/etc/mysql/conf.d
# container run
docker-compose -f ~/db-source/docker-compose.yaml up -d
mysql์ database๋ฅผ ๋ง๋ค๊ณ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํ๋ค.
# db ์์ฑ
docker exec -it db-source bash
mysql -u root -p
## ํจ์ค์๋ ์
๋ ฅ
CREATE DATABASE spring_batch default CHARACTER SET UTF8;
SHOW DATABASES;
# spring์์ ์ ์ํ ๊ฒ ์ด๋ฏ๋ก localhost๊ฐ ์๋ %๋ฅผ ์จ์ค๋ค.
GRANT ALL PRIVILEGES ON spring_batch.* TO $ID@'%' IDENTIFIED BY "$PASSWORD";
exit
mysql -u $ID -p
## $PASSWORD ์
๋ ฅ
SHOW DATABASES;
## spring_batch๊ฐ ๋ณด์ด๋์ง ํ์ธ
build.gradle
์ ๋ค์์ ์ถ๊ฐํ๋ค.
dependencies {
// jdbc
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
// mysql
implementation 'mysql:mysql-connector-java'
}
mysql
์ ์ฌ์ฉํ๊ธฐ ์ํ์ฌ resources/application.properties
ํ์ผ์ ๋ค์ ์์ฑํ๋ค.
์ค์ ์ด ๋ณต์กํด์ง๋ฏ๋ก *.properties
๋์ *.yml
๋ก ์ ํํ๋ค.
spring:
profiles: mysql
datasource:
hikari:
# MYSQL_ADDR:PORT/DATABASE
jdbc-url: jdbc:mysql://192.168.56.103:3306/spring_batch
# mysql databases๋ฅผ accessํ๊ธฐ์ํ ๊ณ์
username: rivernine
password: rivernine
# mysql์ฉ jdbc๋๋ผ์ด๋ฒ
driver-class-name: com.mysql.jdbc.Driver
์ฌ๊ธฐ๊น์ง ์งํํ ํ ์คํ์ ์์ผ๋ณด๋ฉด ํด๋น ํ ์ด๋ธ์ด ์๋ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ฐ๋ผ์ ๋ฉํ๋ฐ์ดํฐ ํ
์ด๋ธ์ ์ถ๊ฐ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค.
์คํค๋ง๋ค์ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์๋ค.
๋ณธ ๋ฌธ์์์๋ schema-mysql.sql
์ ์ฌ์ฉํ๋ค.
shcema-mysql.sql
์ ๋ชจ๋ ์คํค๋ง๋ฅผ mysql
์์ ์คํํ๋ค.
mysql -u $USER -p
use spring_batch;
# shcema-mysql.sql ๋ถ์ฌ๋ฃ๊ธฐ
show tables;
๋ค์ ํ
์ด๋ธ๋ค์ด ์ถ๊ฐ๋ ๊ฒ์ ํ์ธํ๋ค.
# ๋น๋
./gradlew build
# Spring-boot ์คํ
java -jar ./build/lib/*.jar
๊ทธ๋ฆฌ๊ณ ๋ค์ ์คํ์ ํ๋ฉด ์ค๋ฅ์์ด ์ ์์ ์ผ๋ก ๋์ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๋ชจ๋ ์์ค๋ ๊นํ๋ธ์ ์ฌ๋ ค๋์๋ค.
์ฐธ๊ณ ๋งํฌ: jojoldu ๋ธ๋ก๊ทธ