๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring

์„œ๋ฒ„ ์‹คํ–‰ ์‹œ DB Table ์ƒ์„ฑ

์„œ๋ฒ„ ์‹คํ–‰ ์‹œ DB Table ์ƒ์„ฑ

ApplicationRunner์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ์„œ๋ฒ„ ์‹คํ–‰ ์‹œ DB Table์„ ์ƒ์„ฑํ•ด๋ณด์ž.

DatabaseConfig

config ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค๊ณ  DatabaseConfig๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ด ์ฃผ์ž.

import lombok.RequiredArgsConstructor;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

@RequiredArgsConstructor
@Component
public class DatabaseConfig implements ApplicationRunner {

    private final DataSource dataSource;

    @Override
    public void run(ApplicationArguments args) throws SQLException {
        try(Connection connection = dataSource.getConnection()){
            String sql = "create table if not exists users(" +
                    "id bigint(5) not null auto_increment," +
                    "email varchar(100) not null," +
                    "password varchar(100) not null," +
                    "primary key(id));";
            Statement statement = connection.createStatement();
            statement.executeUpdate(sql);
        } catch (Exception e){
            System.out.println(e);
        }
    }
}

DataSource

JDBC๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๋Š” Connection์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค.

DataSource๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋œ Connection์„ ์ œ๊ณต๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ DB์— ๋” ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

final๋กœ ์„ ์–ธํ•˜๊ณ  ๋กฌ๋ณต์˜ @RequiredArgsConstructor๋ฅผ ์ด์šฉํ•ด Setter ์ฃผ์ž…์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

ApplicationRunner

'ApplicationRunner'์˜ run() ๋ฉ”์„œ๋“œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™ ์‹œ ๋ฐ”๋กœ ์‹คํ–‰๋œ๋‹ค.

DB ์—ฐ๊ฒฐ ํ›„ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

run() ๋ฉ”์„œ๋“œ ์•ˆ์˜ ๋‚ด์šฉ์€ sql ๋ฌธ์„ ์ด์šฉํ•ด ์˜ˆ์ œ Table์„ ์ƒ์„ฑํ•˜๋Š” ๋‚ด์šฉ์ด๋‹ค.

DB Table

์„œ๋ฒ„ ์‹คํ–‰๊ณผ ๋™์‹œ์— ์•„๋ž˜์˜ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.