목차
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
'Spring' 카테고리의 다른 글
Spring 청크 통신을 편리하게 쓰게 해주는 ResponseBodyEmitter 써보기 (0) | 2025.01.09 |
---|