[Spring Boot] 스프링 데이터 - 인메모리 데이터베이스, DBCP

dsunni·2020년 8월 8일
0
post-custom-banner

스프링 데이터

SQL DBNoSQL
인메모리 데이터베이스 지원Redis (Key/Value)
DataSource 설정MongoDB(Document)
DBCP 설정Neo4J(Graph)
JDBC 사용
스프링 데이터 JPA 사용
jOOQ 사용하기
데이터베이스 초기화
데이터베이스 마이그레이션 툴 연동하기

인메모리 데이터베이스

스프링 부트가 지원하는 인메모리 데이터베이스

  • H2
  • HSQL
  • Derby

Spring-JDBC가 클래스패스에 있으면 자동 설정이 필요한 DataSource와 JdbcTemplate 빈을 설정해준다.

프로젝트 생성

  • Spring Web, JDBC API, H2 DB를 포함한 Spring Project 생성
  • libraries - auto configuration ... - META-INF - spring.factories를 확인하면 DataSourceAutoConfiguration, JdbcTemplateAutoConfiguration 두 자동 설정 Bean 확인
  • h2 의존성이 classpath에 들어있고 아무런 DataSource 설정이 없으면 스프링은 자동으로 인메모리 데이터베이스를 설정해주고 애플리케이션이 동작됨

@Component
public class H2Runner implements ApplicationRunner {
    @Autowired
    DataSource dataSource;

    @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);
        }
    }
}
  • 인메모리 데이터베이스 기본 연결 정보 확인

    • System.out.println(connection.getMetaData().getURL());
      System.out.println(connection.getMetaData().getUserName());
  • User 테이블 생성 쿼리 실행


H2 콘솔 사용 하는 방법

  1. spring-boot-devtools 추가

  2. application.properties) spring.h2.console.enabled=true

application.properties

spring.h2.console.enabled=true

application.properties 파일을 수정하고 http://localhost:8080/h2-console 에서 H2 콘솔에 접속해보자

image



DBCP (Data Base Connection Pool)

DBCP란

https://aljjabaegi.tistory.com/402

DBCP는 DB와 커넥션을 맺고 있는 객체를 관리하는 역할을 한다.

JDBC (Java에서 DB 연결을 위한 인터페이스)만을 사용할 경우 다음과 같은 단계를 거쳐야한다.

  1. DB 접속을 위한 JDBC 드라이버 로드
  2. getConnection Method로부터 DB 커넥션객체 얻음
  3. 쿼리 수행을 위한 PreparedStatement 객체 생성
  4. executeQuery 실행해 결과 받아옴

여기서 1, 2 번은 같은 작업을 반복하기 때문에 비효율적이다. 이 부분을 효율적으로 처리하도록 바꾸는 것이 DBCP의 역할이다. DBCP가 애플리케이션 성능의 핵심적인 역할을한다.


스프링부트가 지원하는 DBCP

DBCP 설정

  • spring.datasource.hikari.*
  • spring.datasource.tomcat.*
  • spring.datasource.dbcp2.*

application.properties

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

spring.datasource.DBCP이름.DBCP설정값



profile
https://dsunni.tistory.com/ 이사갑니답
post-custom-banner

0개의 댓글