본문 바로가기
Java, Kotlin, Spring/Spring, Spring Boot

Spring Data - PostgreSQL

by Wordbe 2021. 1. 20.
728x90

Springboot Spring Data - PostgreSQL

 

PostgreSQL 은 무료 오픈소스 DBMS 이다. 스프링 데이터와 연동하는 법을 알아보자.

우선 의존성에 포스트그레스큐엘을 추가한다.

pom.xml

<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
</dependency>

 

그리고 스프링 데이터소스에 DB 서버와 데이터베이스를 연동시켜주고, 접속 아이디와 비밀번호를 알려주자.

application.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/springboot
spring.datasource.username=wordbe
spring.datasource.password=1234

 

이제 postgreSQL 을 도커에서 실행시켜보자.

$ docker run -p 5432:5432 -e POSTGRES_PASSWORD=1234 -e POSTGRES_USER=wordbe -e POSTGRES_DB=springboot --name springboot-postgres -d postgres

이렇게하면 postgres 이미지가 만약 없어도 docker pull posgres 를 자동으로 하여 이미지를 다운받고, 이미지를 실행시킨다.

로컬의 5432 포트와 도커 안의 postgres 포트를 5432로 연결시키고, 관리자 비밀번호를 1234로 설정한다.

DB 의 새로운 유저 아이디와 비밀번호를 설정하고, 이미지 이름은 springboot-postgres 로 설정한다.

 

도커 컨테이너를 실행시킨다.

$ docker exec -i -t springboot-postgres bash

 

postgreSQL 은 MySQL, oracle 등과 명령어가 조금 다르다.

# 관리자권한으로 DB postgreSQL 접속
/# su - postgres

# DB 에 로그인
# psql springboot -U wordbe -W 도 가능
$ psql springboot --username wordbe --password
Password: 1234

# 데이터베이스 조회
-# \list

# 테이블 조회
-# \dt

# 쿼리
-# SELECT * FROM food;

 

 

자바 코드를 실행하여, 테이블을 생성하고 데이터를 추가해보자.

@Component
public class AppRunner implements ApplicationRunner {

    Logger logger = LoggerFactory.getLogger(AppRunner.class);

    @Autowired
    DataSource dataSource;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        try ( Connection connection = dataSource.getConnection() ) {
            logger.info(String.valueOf(dataSource.getClass()));
            logger.info(connection.getMetaData().getDriverName());
            logger.info(connection.getMetaData().getURL());
            logger.info(connection.getMetaData().getUserName());

            Statement statement = connection.createStatement();
            String sql = "CREATE TABLE food(id INTEGER NOT NULL, name VARCHAR(255), PRIMARY KEY (id))";
            statement.executeUpdate(sql);
            statement.executeUpdate("INSERT INTO food VALUES (1, 'Apple')");
        }
    }
}

 

 

 

 

 

 

728x90

'Java, Kotlin, Spring > Spring, Spring Boot' 카테고리의 다른 글

Spinrg data 초기화, migration  (0) 2021.01.20
Springboot - Spring Data JPA  (0) 2021.01.20
Spring Data - MySQL  (0) 2021.01.20
Spring Data - 인메모리 DB  (0) 2021.01.20
Springboot - Exception, HATEOAS, CORS  (0) 2021.01.19

댓글