티스토리 뷰
[Spring boot] PostgreSQL 연동 (build.gradle, application.yml)
우징어🦑 2021. 9. 23. 16:59psql 설정
psql 시작하기
Server [localhost]: Enter
Database [postgres]: Enter
Port [5432] : Enter
Username [postgres]: Enter
Password for user postgres: postgres
\du : 계정들 리스트와 각 계정의 권한과 역할 확인
처음에는 postgres 밖에 없다.
create role admin_wj with login password 'admin_wj';
admin_wj이라는 계정을 생성한다.
alter user admin_wj with createdb;
방금 만든 admin_wj에게 db를 생성할 수 있는 권한을 준다.
alter user admin_wj with superuser;
superuser권한도 준다.
create database shop;
shop이라는 데이터베이스를 생성한다.
grant all privileges on database shop to admin_wj;
admin_wj에게 shop 데이터베이스에 관한 모든 권한을 부여한다.
\l
database 리스트를 볼 수 있다. 방금 만든 shop이 있는걸 확인할 수 있다.
\connect shop
shop 데이터베이스에 연결한다.
앞에 postgres-# 에서 shop-#으로 바뀌는 걸 확인할 수 있다!
Spring boot 코드 작성
build.gradle - dependencies 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-cache'
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-freemarker'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-quartz'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.session:spring-session-jdbc'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
// https://mvnrepository.com/artifact/org.postgresql/postgresql
implementation group: 'org.postgresql', name: 'postgresql', version: '42.2.23' // 추가
runtimeOnly 'org.postgresql:postgresql' // 추가
}
주석에 걸려있는 링크(mvnrepository.com)로 가면 복붙할 코드가 나온다.
나는 gradle 선택!
application.yml
server:
port: 8080
spring:
web:
resources:
static-locations: META-INF:/resources, classpath:/resources, classpath:/static, classpath:/static/dist
# Database
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/shop
platform: postgres
username: admin_wj
password: admin_wj
# jpa properties
jpa:
hibernate:
ddl-auto: update # When you launch the application for the first time - switch "none" at "create"
show-sql: true
database: postgresql
database-platform: org.hibernate.dialect.PostgreSQLDialect
open-in-view: false
generate-ddl: true
# Database, # jpa properties 부분 추가
postgreSQLRunner.java
package com.example.demo.postgrestest;
import java.sql.Connection;
import java.sql.Statement;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
@Component
public class postgresSQLRunner implements ApplicationRunner {
@Autowired
DataSource dataSource;
@Autowired
JdbcTemplate jdbcTemplate;
@Override
public void run(ApplicationArguments args) throws Exception {
try (Connection connection = dataSource.getConnection()){
System.out.println(dataSource.getClass());
System.out.println(connection.getMetaData().getURL());
System.out.println(connection.getMetaData().getUserName());
Statement statement = connection.createStatement();
String sql = "CREATE TABLE t_product(product_no INTEGER NOT NULL, product_name VARCHAR(255), PRIMARY KEY (product_no))";
statement.executeUpdate(sql);
String sql = "select * from t_product";
statement.executeUpdate(sql);
}
jdbcTemplate.execute("INSERT INTO t_product VALUES (1, 'Big shirt')");
}
}
코드 작성 후 Application.java 우클릭 - Run Java 해주기
postgres 연동 성공 시 터미널 창
연동에 성공하면 터미널창에
jdbc:postgresql://localhost:5432/shop
admin_wj
이런 문구가 출력되는 걸 확인할 수 있다!
psql 터미널 창에서 확인
psql 터미널 창에서 확인해보니 spring boot에서 실행한 코드가 잘 반영된 것을 볼 수 있다.
한번더 Run Java로 실행하면 에러남
ERROR: relation "t_product" already exists
t_product 는 이미 존재하고, primary_key가 동일해지므로 에러가 난다.
아래 블로그를 참고하여 Spring boot 와 postgreSQL 연동을 진행하였다.
DB 연동이 되었으니 이제 CRUD 실습을 할 수 있겠다.
참고 블로그
'프로그래밍 > Spring Boot' 카테고리의 다른 글
[Spring boot & Vue.js 프로젝트 기초] axios - get, post 해보기 (0) | 2021.09.23 |
---|---|
Spring Boot + Vue.js 연동하기 (vscode) (0) | 2021.09.16 |
스프링부트 lombok 사용법 정리 (vscode) (0) | 2021.09.16 |
- Total
- Today
- Yesterday
- 정적 웹페이지 배포
- 파이썬
- AWSBedrock
- partyrock무료
- partyrock생성
- vscode easycode
- easycode
- awsgenai
- 티스토리챌린지
- partyrock앱
- React native 작동 원리
- 백준
- mac vscode download fail
- 코딩테스트
- easycode chatGPT
- 알고리즘
- 병돌리기구현
- ChatGPT
- 생성형AI
- partyrock사용볍
- 술자리병돌리기게임
- 오블완
- S3배포
- genaiapp
- aws생성형ai
- partyrock
- PYTHON
- BOJ
- S3 403 forbidden
- 정적 웹사이트 배포
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |