목차

    JPA와 PostgreSQL 연동

    라이브러리 설치

    MySQL을 연동할 때와 같이 JPA 라이브러리 설치와 PostgreSQL 라이브러리 설치를 진행합니다.

    build.gradle에 아래의 코드를 추가합니다.

    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.postgresql:postgresql:42.6.0'

     

    application.yml 설정

    MySQL을 연동할 때와 같이 application.yml에 DB 접속 정보 및 JPA 설정을 입력해야 합니다.

    spring:
      datasource:
        url: jdbc:postgresql://localhost:5432/<DB명>
        username: <PostgreSQL 계정명>
        password: <비밀번호>
        driver-class-name: org.postgresql.Driver
      jpa:
        show-sql: true
        database: postgresql
        hibernate:
          ddl-auto: update

     

    위 두 설정을 마치면 MySQL과 같은 방식으로 사용하면 된다고 합니다.

    한 가지 주의 할 점은 PostgreSQL에서 Table명으로 "user"를 사용하면 에러가 발생한다고 합니다. 

     

    실습

    앞서 알아본 내용을 적용하여 간단한 테이블을 생성하고 연동해보려고합니다.

     

    프로젝트 생성

    start.spring.io에 방문하여 다음과 같이 프로젝트를 생성하도록 하였습니다.

    Dependencies에서 사용하고자하는 라이브러리들을 미리 선택할 수 있는데 PostgreSQL Driver도 있기에 추가하였습니다.

     

    데이터베이스 생성

    Spring에 연결해줄 데이터베이스를 생성합니다.

     

    PostgreSQL의 SQL Shell을 실행해줍니다.

     

    접속하면 Server부터 Username까지 엔터로 넘겨줍니다.

    암호는 PostgreSQL 설치 때 생성했던 root 계정의 암호를입력해주면 됩니다.

     

    DB 계정 생성 및 권한 부여하기를 진행합니다.

    //계정 생성
    CREATE ROLE [USER] WITH LOGIN PASSWORD '[PASSWORD]';
    
    //CREATEDB 권한 부여
    ALTER USER [USER] WITH CREATEDB;
    
    //SUPERUSER 권한 부여
    ALTER USER [USER] WITH SUPERUSER;
    
    //CREATEROLE 권한 부여
    ALTER USER [USER] WITH CREATEROLE;

     

    저는 sa 라는 이름으로 계정을 생성했습니다. 비밀번호는 1234로 설정하였습니다.

    DB를 생성할 수 있는 권한 또한 부여했습니다.

     

    \du 명령어를 통해 계정과 역할이 잘 생성되었는 확인합니다.

     

    새로운 데이터 베이스를 생성합니다.

    소유자는 앞서 만든 sa로 데이터 베이스 이름은 TESTDB로 하겠습니다.

     

    \l (소문자 L 입니다)을  통해 데이터베이스 생성을 확인합니다.

     

    아래와 같은 명령어를 통해 sa 유저 이름으로 TESTDB에 접속할 수 있습니다.

    (\c [DB Name] [Connection User])

     

    application.yml 설정

    아래와 같이 application.yml 설정을 진행합니다.

    spring:
      datasource:
        url: jdbc:postgresql://localhost:5432/testdb
        username: sa
        password: 1234
        driver-class-name: org.postgresql.Driver
      jpa:
        show-sql: true
        database: postgresql
        hibernate:
          ddl-auto: update

     

    Member 생성해보기

    간단하게 Member 객체를 생성하는 코드를 만들고 실행합니다.

    DB 내에서 테이블을 생성한 적이 없기 때문에 테이블이 생성되는 SQL 문이 실행되었음을 확인하실 수 있습니다.

     

    \d 명령어를 통해 확인해보시면 기존에는 테이블이 없기 때문에 '관련 릴레이션 찾을 수 없음.'이었다가 테이블 생성이 완료되었기 때문 테이블 목록을 확인할 수 있습니다.

    테이블이 없었을 때
    테이블 생성 후

     

     

    아래와 같이 PostMan을 이용하여 Post 요청을 보내보았습니다.

     

    다음과 같이 잘 생성되었음을 확인할 수 있습니다.

     

     

     

    Reference

    https://ssjeong.tistory.com/entry/Spring-Spring-boot%EC%97%90%EC%84%9C-PostgreSQL-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0

    https://chb2005.tistory.com/193

    https://bluelicht.tistory.com/55