스프링 부트 활용

PostgreSQL

   PostgreSQL을 사용해보기 위해 postgres 드라이버 의존성을 추가하자.

<dependency>
	<groupId>org.postgresql</groupId>
	<artifactId>postgresql</artifactId>
</dependency>

docker를 사용해 postgresql을 설치한다.

docker run -p 5432:5432 -e POSTGRES_PASSWORD=password -e POSTGRES_USER=grace -e POSTGRES_DB=springboot --name postgres_boot -d postgres

컨테이너 안의 5432포트를 localhost의 5432포트로 mapping하고, postgresql 정보를 설정해준다.

postgres 서버에 접근하려면, 아래 명령어를 입력해준다.(컨테이너 안에 접근하는 것이다)
👉 접근 전에 만약 server가 꺼져있다면, docker start postgres_boot(컨테이너 이름)로 server 부터 켜줘야한다.

docker exec -i -t postgres_boot bash

그 후, su - postgres로 계정을 바꿔주고, psql springboot --username grace로 만들어준 데이터베이스에 접속한다. 그리고 application.properties 정보를 postgres 설치 시 설정해 준 값으로 설정한다.

spring.datasource.hikari.maximum-pool-size = 4

spring.datasource.url = jdbc:postgresql://localhost:5432/springboot
spring.datasource.username = grace
spring.datasource.password = password

postgres 러너를 만들어서 실행해준다.

@Component
public class MySQLRunner implements ApplicationRunner {

  @Autowired
  DataSource dataSource;

  @Autowired
  JdbcTemplate jdbcTemplate;

  @Override
  public void run(ApplicationArguments args) throws Exception {
    try(Connection connection = dataSource.getConnection()) {

      System.out.println(connection.getMetaData().getURL());
      System.out.println(connection.getMetaData().getUserName());

      Statement statement = connection.createStatement();
      String sql = "CREATE TABLE USER(ID INTEGER NOT NULL, name VARCHAR(255), PRIMARY KEY (id))";
      statement.executeUpdate(sql);

    }

    jdbcTemplate.execute("INSERT INTO USER VALUES (1, 'grace')");
  }

}

Reference