Spring Boot | 데이터베이스 접근 | Hello World

데이터베이스 접근

  • 의존관계에 spring-boot-starter-jdbc과 사용하는 DB (org.hsqldb:hsqldb)를 추가한다.
  • 그러면 지정한 DB를 메모리 상에 올려서 사용할 수 있게 된다.
  • 메모리에 저장되기에 JVM이 정지하면 데이터가 손실된다.
  • HSQLDB 외에 H2 및 Derby를 동일하게 내장해서 이용이 가능하다.

코드 작성

build.gradle

dependencies {
    compile 'org.hsqldb:hsqldb'
    compile 'org.springframework.boot:spring-boot-starter-jdbc'
}

src/main/java/sample/springboot/Main.java

package sample.springboot;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

@SpringBootApplication
public class Main {

    public static void main(String[] args) {
        try (ConfigurableApplicationContext ctx = SpringApplication.run(Main.class, args)) {
            Main m = ctx.getBean(Main.class);
            m.method();
        }
    }

    @Autowired
    private JdbcTemplate jdbc;

    public void method() {
        this.jdbc.execute("CREATE TABLE TEST_TABLE (ID INTEGER NOT NULL IDENTITY, VALUE VARCHAR(256))");

        this.jdbc.update("INSERT INTO TEST_TABLE (VALUE) VALUES (?)", "hoge");
        this.jdbc.update("INSERT INTO TEST_TABLE (VALUE) VALUES (?)", "fuga");
        this.jdbc.update("INSERT INTO TEST_TABLE (VALUE) VALUES (?)", "piyo");

        List<Map<String, Object>> list = this.jdbc.queryForList("SELECT * FROM TEST_TABLE");
        list.forEach(System.out::println);
    }
}

실행 결과

{ID=0, VALUE=hoge}
{ID=1, VALUE=fuga}
{ID=2, VALUE=piyo}

데이터를 파일에 저장하기

  • 프로퍼티 파일에 spring.datasource.url을 정의하여 JDBC 연결 가능한 URL을 지정할 수 있다.
  • HSQLDB의 경우 URL에서 데이터를 파일에 저장할지 여부를 지정하는 것이기에 위와 같이 설정하면 데이터를 파일에 저장이 된다.

application.properties

spring.datasource.url=jdbc:hsqldb:file:./db/testdb;shutdown=true