Database install and connection

GEONNY·2024년 7월 16일
0

Building-API

목록 보기
4/28
post-thumbnail

이제 Postgresql 을 설치하고, 앞에서 구현한 Spring boot application 에 연동하는 방법을 알아보겠습니다. 아래의 Link 로 이동해 OS 에 맞는 설치파일을 다운로드 하세요.

📌Download Postgresql

Link : https://www.postgresql.org/download/

저는 windows version 을 다운로드 했습니다.

다운로드가 완료되면 파일을 실행, 설치를 진행합니다.

📌Install Postgresql

Next Click!

경로를 확인하고 Next Click!

전체 구성요소를 선택하고 Next Click!

Data Directory 를 확인하고 Next Click!

superuser 의 Password 를 입력하고 Next Click!

Port 를 확인하고 Next Click! 저는 15432 로 설정했습니다.

Locale 을 Korean, Korea 로 선택하고 Next Click!

이제 나머지는 모두 Next 를 클릭하면 설치가 완료됩니다.
IntelliJ 로 DB 연결을 해도 되지만, 보다 편리한 Database tool 인 DBeaver 를 설치하도록 하겠습니다.(무료) 아래의 Link 로 이동하여 OS에 맞는 Community version 파일을 다운 받으세요.

📌Install DBeaver

Link : https://dbeaver.io/download/

설치 완료 후 연결을 확인합니다.

연결 후에 test_db Database를 생성 합니다.

test_db 에 모든 권한을 갖는 계정도 생성해 줍니다. (geonlee / geonlee 로 생성)

CREATE USER ${userName} PASSWORD '${password}' SUPERUSER;
GRANT ALL PRIVILEGES ON DATABASE ${database} TO ${userName};

기본적인 DB 설정이 끝났습니다. 이제 IntelliJ 를 실행하고, gradle.build 및 application.yml 파일을 열어 DB관련 설정을 추가해 줍니다.

📌gradle.build

gradle.build dependencies 에 Postgresql connector 를 추가합니다.
gradle.build 파일 변경 후에는 항상 Ctrl + Shift + O 를 눌러 gradle 의 변경사항을 로드해주세요.

implementation group: 'org.postgresql', name: 'postgresql', version: '42.7.3'
runtimeOnly 'org.postgresql:postgresql'

📌application.yml

application.yml 에 DBCP(Database Connection Pool) 관련 설정을 추가합니다.
주석# 이 달린 부분이 추가된 부분입니다.

spring:
  application:
    name: api
  profiles:
    active: dev
  datasource:
    hikari: #Connection pooling을 제공하는 JDBC DataSource의 구현체인 hikari 관련 설정
      connection-timeout: 3000
      validation-timeout: 3000
      max-lifetime: 240000
server:
  port: 13713
  servlet:
    context-path: /my-api
    encoding:
      charset: utf-8
      enabled: true
      force: true

---
spring:
  config:
    activate:
      on-profile: dev
  datasource:
    url: "jdbc:postgresql://localhost:15432/test_db"
    driver-class-name: "org.postgresql.Driver"
    username: "geonlee"
    password: "geonlee"
    hikari: #Connection pool 개수 설정
      minimum-idle: 2
      maximum-pool-size: 2

---
spring:
  config:
    activate:
      on-profile: prod

이제 DB 관련 설정은 끝났습니다. 다음에는 몇몇 테이블을 생성하고 JPA 를 연동해 보도록 하겠습니다.😁

📚참고

📕DBCP (Database Connection Pool)

DBCP 는 DB와 커넥션을 맺고 있는 객체를 관리하는 역할을 합니다.
JDBC만을 사용할 경우라면 DB접속 시 아래와 같은 순서가 반복되게 됩니다.

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

여기서 비효율적인 부분은 1번과 2번 입니다.
DB 연결 시 마다 Driver를 로드하고 커넥션 객체를 얻는 작업을 반복하죠.
이 부분을 효율적으로 처리하도록 바꾸는 것이 DBCP의 역할 입니다.

DBCP를 사용하게 되면,
Application 실행 시 미리 일정량의 DB Connection 객체를 생성하고 Pool 이라는 공간에 저장해 둡니다. 그리고 DB 연결 요청이 있으면, 이 Pool 이라는 공간에서 Connection 객체를 가져다 쓰고 반환 하게 됩니다.

📙Spring boot HikariCP 옵션

  • maximum-pool-size: 최대 pool size (defailt 10)
  • connection-timeout: 커넥션의 타임아웃
  • validation-timeout: 유효한 타임아웃
  • minimum-idle: 연결 풀에서 HikariCP가 유지 관리하는 최소 유휴 연결 수
  • idle-timeout: 연결을 위한 최대 유휴 시간
  • max-lifetime: 닫힌 후 pool 에있는 connection의 최대 수명 (ms)입니다.
  • auto-commit: auto commit 여부 (default true)

📒HikariCP Logging level 옵션

logging:
  level:
    org.hibernate.SQL: info
    root: info
    com.zaxxer.hikari.pool.HikariPool: debug
profile
Back-end developer

0개의 댓글