티스토리 뷰

Spring

Spring Boot H2 사용하기

따강아지 2023. 8. 12. 04:02

1. 종속성

1.1 gradle 종속성 

runtimeOnly 'com.h2database:h2'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

1.2 Maven 종속성 

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

 

2. 데이터베이스 구성 

SpringBoot에서 DB를 연결하기 위해서는 Application.yml 또는  application.properties에 속성을 추가 해야 합니다.

  spring:
  	datasource:
      url: jdbc:h2:file:./data/demodb     # 파일 저장소
      username: sa
      password: hhs1234
      driverClassName: org.h2.Driver
      hikari:                             # DB Connection Pool
        auto-commit: true                 # 자동커밋 여부. (default: true)
        connection-test-query: SELECT 1   # connection 유효성 검사 쿼리
        minimum-idle: 10                  # pool에 유지할 유휴 connection 최소 개수
        maximum-pool-size: 50             # pool에 유지시킬 수 있는 최대 connection 수
        pool-name: pool-hyomee            # connection pool 이름
        max-lifetime: 600000
        leak-detection-threshold: 300000t

"jdbc:h2:mem:mydb" 속성 설정은 메모리 내 DB를 사용하므로 프로그램을 다시 시작하면 사라지므로 파일 기반을 하여 변경을 하면 프로그램을 다시 시작 하여도 남아 있게 됩니다. 

1. 디렉토리 [드라이브] : url: jdbc:h2:file:c:/data/demodb:: 
    - 생성 위치 : c 드라이브의 data 디렉토리 
2. 현재 사용자 디렉토리 [물결]: url: jdbc:h2:file:~/data/demodb
   - 생성 위치 : windows 사용자 디렉토리   C:/Users/<current user>
3. 현재 작업 디렉토리 [점] : url: jdbc:h2:file:./data/demodb.
   - 생성 위치 : 프로그램이 시작되는 디렉토리 

2-1. hikari 속성brettwooldridge/HikariCP: 光 HikariCP・드디어 견고한 고성능 JDBC 커넥션 풀. (github.com)

 

GitHub - brettwooldridge/HikariCP: 光 HikariCP・A solid, high-performance, JDBC connection pool at last.

光 HikariCP・A solid, high-performance, JDBC connection pool at last. - GitHub - brettwooldridge/HikariCP: 光 HikariCP・A solid, high-performance, JDBC connection pool at last.

github.com

3. H2 Console 설정

Web 화면을 통해서 H2 DB 접근을 도와주는 기능으로 속성은 다음과 같습니다.

spring:
  h2:
    console:
      enabled: true                     # 콘솔 사용
      path: /h2-console                 # 콘솔 접근 uri
      settings.trace: false             # 추적 활성화
      settings.web-allow-others: false  # CORS로 다른 사용자 접근 허용 여부

 

4. JPA 설정 

JPA 란 자바에서 객체와 DB를 연결해주는 기술을 구현하기 위해 필요한 부품을 모아놓은 표준 명세로 하이버네이트는 JPA의 명세로 ORM 기술을 구현한 프레임워크 중 하나입니다. Spring Data JPA는 Spring에서 제공하는 모듈 중 하나로,  Repository라는 인터페이스를 제공해서 개발자가 JPA를 더 쉽게 사용할 수 있도록 해주는 것 입니다.

 

  jpa:
    database-platform: org.hibernate.dialect.H2Dialect  # 접속할 database의 SQL Dialect 설정, JPA를 활용하여 동적 쿼리 생성시, database에 맞는 방언 sql을 생성
    properties:
      hibernate:
        show-sql: true                  #  모든 SQL문을 콘솔로 출력
        format_sql: true                # 모든 SQL문을 콘솔로 출력해 준다.
        hbm2ddl.auto: update            # 앱 시작시 @Entity로 정의한 테이블의 create 문 실행
        use_sql_comments: true          # 디버깅이 용이하도록 SQL문 이외에 추가적인 정보를 출력
    open-in-view: false

 

5. 전체 application.yml

spring:
  application:
    name: hyomee
  h2:
    console:
      enabled: true                     # 콘솔 사용
      path: /h2-console                 # 콘솔 접근 uri
      settings.trace: false             # 추적 활성화
      settings.web-allow-others: false  # CORS로 다른 사용자 접근 허용 여부
  datasource:
    url: jdbc:h2:file:./data/demodb     # 파일 저장소
    username: sa
    password: hhs1234
    driverClassName: org.h2.Driver
    hikari:                             # DB Connection Pool
      auto-commit: true                 # 자동커밋 여부. (default: true)
      connection-test-query: SELECT 1   # connection 유효성 검사 쿼리
      minimum-idle: 10                  # pool에 유지할 유휴 connection 최소 개수
      maximum-pool-size: 50             # pool에 유지시킬 수 있는 최대 connection 수
      pool-name: pool-hyomee            # connection pool 이름
      max-lifetime: 600000
      leak-detection-threshold: 300000
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect  # 접속할 database의 SQL Dialect 설정, JPA를 활용하여 동적 쿼리 생성시, database에 맞는 방언 sql을 생성
    properties:
      hibernate:
        show-sql: true                  #  모든 SQL문을 콘솔로 출력
        format_sql: true                # 모든 SQL문을 콘솔로 출력해 준다.
        hbm2ddl.auto: update            # 앱 시작시 @Entity로 정의한 테이블의 create 문 실행
        use_sql_comments: true          # 디버깅이 용이하도록 SQL문 이외에 추가적인 정보를 출력
#        implicit_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
#        physical_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
    open-in-view: false


logging:
  level:
    org:
      hibernate:
        SQL: DEBUG
    type:
      descriptor:
        sql:
          BasicBinder=TRACE:

 

'Spring' 카테고리의 다른 글

Springboot - JPA 이름 규칙  (0) 2023.08.24
Springboot JPA Pagination  (0) 2023.08.23
SpringBoot 로그 출력  (0) 2023.08.15
SpringBoot - ES 개발  (0) 2023.08.15
SpringBoot Mybatis 구성  (0) 2023.08.13