본문 바로가기
Java, Kotlin, Spring/Spring, Spring Boot

Spring Data - 인메모리 DB

by Wordbe 2021. 1. 20.
728x90

Springboot - Spring Data - 인메모리 DB

스프링이 지원하는 인메모리 데이터베이스는 H2, HSQL, Derby가 있다.

Spring JDBC (Java DataBase Connectivity) 가 클래스패스에 있으면 DB와 자바를 연결해주는 빈 클래스를 자동 설정해준다. 이렇게 H2, JDBC가 의존성에만 적혀있다면 스프링부트는 기본적으로 H2 인메모리 데이터베이스를 자동설정해준다.

JDBC와 H2 database 의존성을 추가한다.

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
</dependency>

<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
</dependency>

<DataSource Not Found 에러>
아마존 제공 java 인 corretto 를 사용했었는데, 위와같이 jdbc를 연동하면 DataSource가 빈으로 자동등록이 안되었다.
따라서 jdbc 의존성 등록을 위 대신에 아래와 같이 해주었다.

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

starter에서 제공해주는 라이브러리가 있다면 starter 의존관계를 정의하는 것이 좋을 것 같다.

 

DataSourceProperties 에 DB 정보가 들어있다. shift 를 두 번 누르고 찾아가 보자.

기본적으로 인메모리 데이터베이스 설정은 URL="testdb", username="sa", password="" 로 되어있다.

앱 러너로 간단한 DB 테이블 생성, insert 를 확인해보자.

@Component
public class AppRunner implements ApplicationRunner {

    Logger logger = LoggerFactory.getLogger(AppRunner.class);

    @Autowired
    DataSource dataSource;

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Override
    public void run(ApplicationArguments args) throws Exception {
          // datasource 로 데이터베이스 연결
        try ( Connection connection = dataSource.getConnection() ) {
            logger.info(connection.getMetaData().getURL());
            logger.info(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 도 사용할 수 있다.
              jdbcTemplate.execute("INSERT INTO user VALUES (1, 'Apple')");
        }


    }
}

H2 콘솔을 사용하는 방법은 application.properties 에 아래 설정을 해주면 된다.

spring.h2.console.enabled=true

또는 spring-boot-devtools 를 사용한다면 위처럼 자동 설정되게 된다.

url에 localhost:8080/h2-console 로 접속할 수 있다.

728x90

'Java, Kotlin, Spring > Spring, Spring Boot' 카테고리의 다른 글

Spring Data - PostgreSQL  (0) 2021.01.20
Spring Data - MySQL  (0) 2021.01.20
Springboot - Exception, HATEOAS, CORS  (0) 2021.01.19
Springboot - 템플릿, HtmlUnit  (2) 2021.01.19
Springboot - Web MVC  (128) 2021.01.18

댓글