코린과 함께 스프링 모네 - 8. 리포지토리 레이어 - 보충:H2 Database

개요 / 설명



코토리와 함께 스프링 모네 - 8. 리포지토리 레이어에서는 리포지토리 계층을 제공하여 데이터 지속성 처리를 추상화하여 외부 지속성 영역에 대한 작업을 투명하게 수행할 수 있습니다.

이 경우 외부 영속 영역은 메모리 내에서 응용 프로그램에 내장되어 작동하는 H2 Database Engine을 사용했습니다.

이 H2 Database Engine에는 데이터베이스 정보를 확인하는 콘솔 응용 프로그램이 내장되어 있습니다. 그곳을 이용하여 데이터베이스의 상태 확인을 해 봅니다.

전제 / 환경



런타임 버전


  • Kotlin : 1.3.21
  • SpringBoot : 2.1.1.RELEASE

  • Spring Dependencies


  • Web
  • JDBC
  • JPA
  • H2
  • Actuator

  • 개발 환경


  • OS : Mac
  • IDE : IntelliJ IDEA
  • Build : Gradle

  • 절차 / 설명



    application.yml 설정



    SpringBoot의 application.yml에 다음과 같이 H2 데이터베이스를 사용할 수 있도록 구성 정보를 정의합니다.

    데이터 소스



    Spring 애플리케이션에서 데이터베이스에 연결하기 위한 데이터 소스 정의를 다음과 같이 수행한다.
    spring:
      datasource:
        driver-class-name: org.h2.Driver
        url: jdbc:h2:mem:app;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=TRUE
        username: guest
        password: guest
    


    구성요소
    내용


    driver-class-name
    H2DB 드라이버 라이브러리 org.h2.Driver
    url
    데이터베이스 접속 URL (※ 포맷에 대해서 후술) jdbc:h2:mem:app;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=TRUE
    username
    데이터베이스 연결 사용자 이름

    password
    데이터베이스 연결 암호



    H2 데이터베이스 연결 URL 형식

    H2데이터베이스는, 인메모리로 동작하는 어플리케이션 임베디드형의 사용이나, 리모트 서버로서 가동하는 서버 모드, 또 파일 시스템에 데이터를 기입하는 동작 등 다양한 동작 모드를 취할 수 있습니다. 각각의 동작 모드에 맞춘 접속 URL 포맷이 됩니다.


    작동 모드
    URL 형식
    샘플


    임베디드 모드: 인메모리(프라이빗)jdbc:h2:mem:jdbc:h2:mem:

    임베디드 모드: 인메모리(Named)jdbc:h2:mem:<DB名>jdbc:h2:mem:app

    내장 모드: 로컬 파일jdbc:h2:[file:][<ファイルパス>]<DB名>jdbc:h2:file:/data/sample

    인메모리 DB의 드롭 방지
    DB_CLOSE_DELAY=-1
    jdbc:h2:mem:app;DB_CLOSE_DELAY=-1

    서버 모드: TCP 연결
    jdbc:h2:tcp://<서버 주소>[:<포트>]/[<파일 경로>]
    jdbc:h2:tcp://localhost:8084/data/sample

    서버 모드: TLS 연결
    jdbc:h2:ssl://<서버 주소>[:<포트>]/[<파일 경로>]
    jdbc:h2:ssl://localhost/mem:test

    VM 종료시 DB 연결 끊기
    DB_CLOSE_ON_EXIT=TRUE
    jdbc:h2:mem:app;DB_CLOSE_ON_EXIT=TRUE


    H2 데이터베이스



    H2 데이터베이스의 콘솔 화면을 표시하려면 다음을 설정합니다.
    spring:
      h2:
        console:
          enabled: true
    

    H2 데이터베이스의 콘솔 화면 표시



    응용 프로그램을 시작한 후 H2 데이터베이스 콘솔 화면에 액세스해보십시오.
    $ ./gradlew bootRun
    
    > Task :bootRun
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v2.1.1.RELEASE)
    :
    :
    :
    2019-02-26 16:05:13.358  INFO 7073 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 15 endpoint(s) beneath base path '/admin'
    2019-02-26 16:05:13.457  INFO 7073 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
    2019-02-26 16:05:13.460  INFO 7073 --- [           main] i.p.s.simple.SimpleApplicationKt         : Started SimpleApplicationKt in 5.577 seconds (JVM running for 5.998)
    <==========---> 83% EXECUTING [2m 46s]
    > :bootRun
    
  • http://localhost:[設定したポート番号]/h2-console로 이동하여 H2 데이터베이스 연결 사용자/암호를 입력하여 연결합니다.





  • 요약 / 되돌아보기



    SpringBoot와 함께 손쉽게 사용할 수 있는 H2 데이터베이스를 조작해 보았습니다.
    데이터베이스의 기능 자체에 의존하지 않는 어플리케이션 개발의 장면에서는, 인스톨 작업이 불필요하고, 간단하게 사용할 수 있는 H2 데이타베이스는 이용할 수 있는 장면이 여러 가지 있는 것은 아닐까요.

    이번 소스


  • shinyay/spring-just-rest-kotlin/tree/first-repository-layer
  • 좋은 웹페이지 즐겨찾기