스프링 부트(spring boot) postgresql 연동하기
스프링 부트 개발을 하면서, 디비가 필요해 졌습니다.
스프링 부트 프로젝트에 postgresql 데이터 베이스를 연동하여 테스트 해보겠습니다.
사전 준비 / 의존성 추가
먼저 스프링 부트 프로젝트, postgresql, docker 프로그램이 필요합니다.
그리고 build.gradle에 의존성을 추가해줍니다. dependencies 영역에 추가하면 됩니다.
저는 gradle을 사용했지만 pom을 사용하시는 분들은 pom.xml에 의존석을 추가해주면 됩니다.
bulid.gradle
dependencies {
...
//postgresql
compile group: 'org.postgresql', name: 'postgresql', version: '42.2.16'
// Logging
compile group: 'org.bgee.log4jdbc-log4j2', name: 'log4jdbc-log4j2-jdbc4.1', version: '1.16'
}
그리고 application.properties에 아래의 내용을 추가해줍니다.
application.properties
...
#Datasource Configuration
spring.datasource.sql-script-encoding=utf-8
spring.datasource.initialization-mode=always
spring.datasource.platform=postgres
spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:postgresql://hostname:5431/coupapi
spring.datasource.username=postgres
spring.datasource.password=db패스워드
#JPA Configuration
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
주의 할점은 아래와 같이 postrgresql 데이터 베이스 접속 정보 입니다.
hostname은 서버가 있으시면 서버의 도메인이나 ip주소를 입력하시면 되고, 5431 포트는 도커로 실행시킬 포트를 설정해주시면 됩니다. 그다음 /뒤에 오는 것은 db 이름입니다. (coupapi는 postgresql 데이터 베이스 이름입니다)
spring.datasource.url=jdbc:log4jdbc:postgresql://hostname:5431/coupapi
spring.datasource.username=postgres
spring.datasource.password=db패스워드
도커 실행 (postgresql 데이터 베이스 서버)
도커를 이용해 postgresql 서버를 실행해줍니다.
docker run -p 5431:5432 -e POSTGRES_PASSWORD=비밀번호 -e POSTGRES_USER=postgres -e POSTGRES_DB=coupapi --name postgres_server -d postgres
스프링 부트 테스트 코드 작성 및 실행
클래스를 생성하여, 테스트 코드를 작성합니다.
테스트 코드 작성후 스프링 부트 프로젝트를 실행하면 에러가 뜨거나 성공적으로 돌아가겠죠?
PostgreSQLRunner.java
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;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.Statement;
@Component
public class PostgreSQLRunner 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 account(ID INTEGER NOT NULL, name VARCHAR(255), PRIMARY KEY (id))";
statement.executeUpdate(sql);
}
jdbcTemplate.execute("INSERT INTO account VALUES (1, 'dsunni')");
}
}
연동이 되어 위의 코드가 정상적으로 돌아갔다면, account라는 테이블이 생성되고 그 안에 1, ringobee 데이터가 들어가 있을 겁니다.
긴글 읽어 주셔서 감사합니다.
더 궁금하신 사항은 댓글로 문의해주시면 빠르게 답변드리겠습니다.
'SQL > Postgresql' 카테고리의 다른 글
postgresql 데이터 베이스 엑셀 데이터 넣기 (12) | 2020.01.15 |
---|---|
postgresql 테이블 조회 / 생성 / 비밀번호 설정 (0) | 2020.01.15 |
postgresql 툴 추천 / postgresql 데이터 베이스 툴 추천 / 디비 툴 추천 (0) | 2019.12.29 |
postgresql 접속 / 기본적인 명령어 (0) | 2019.12.29 |
댓글