ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [23] Spring Data : PostgreSQL 설정하기
    Spring/Spring boot 2020. 7. 11. 09:05
    반응형

    [PostgreSQL 사용을 위한 설정]

    우선 PostgreSQL driver 의존성을 추가해줍니다. pom.xml file의 dependencies tag 안에 다음의 의존성 관련 code를 추가해주세요.

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

     

     

    application.properties file에 spring.datasource.* property들을 추가해줍니다.

    spring.datasource.hikari.maximum-pool-size=2
    
    spring.datasource.url=jdbc:postgresql://localhost:5432/springboot
    spring.datasource.username=dave
    spring.datasource.password=pass

    접속하고자 하는 database driver는 postgresql이고 port는 5432이며 database명은 springboot입니다.

     

     

    terminal에서 다음 명령어를 실행하여 docker에 postgresql container를 추가 및 시작합니다.

    docker run -p 5432:5432 \
    -e POSTGRES_PASSWORD=pass \
    -e POSTGRES_USER=dave \
    -e POSTGRES_DB=springboot \
    --name postgres_boot \
    -d postgres

     

    다음 명령어를 terminal에 입력하여 container의 bash를 실행합니다.

    docker exec -i -t postgres_boot bash

     

     

    terminal에 다음과 같이 입력하여 postgresql을 실행합니다.

    psql --username=dave --dbname=springboot

    postgresql의 role에 대한 내용 참고

     

     

    이제 postgresql을 사용할 준비가 되었습니다.

     

    현재 database에 table이 있는지 \dt 명령어로 확인을 해보면 어떤 table도 없음을 볼 수 있습니다.

     

     

     

     


    [PostgreSQL의 사용]
    database에 table을 하나 만들고 data를 insert 하는 Runner class를 만들어 application을 실행합니다.

    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.Controller;
    
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.Statement;
    
    @Controller
    public class DatabaseRunner implements ApplicationRunner {
    
        @Autowired
        DataSource dataSource;
    
        @Autowired
        JdbcTemplate jdbcTemplate;
    
        @Override
        public void run(ApplicationArguments args) throws Exception {
    
            try(Connection connection = dataSource.getConnection()) {
                String url = connection.getMetaData().getURL();
                String userName = connection.getMetaData().getUserName();
    
                System.out.println("DBCP type: " + dataSource.getClass());
                System.out.println("URL: " + url);
                System.out.println("UserName: " + userName);
    
                Statement statement = connection.createStatement();
                String sql = "CREATE TABLE USERS(ID INTEGER NOT NULL, name VARCHAR(255), PRIMARY KEY (id))";
                statement.executeUpdate(sql);
            }
    
            jdbcTemplate.execute("INSERT INTO USERS VALUES (1, 'Dave')");
        }
    }
    

    application  DBCP, URL, UserName을 console에 출력하도록 작성하였습니다.

     

     

     

     

    이제 psql이 실행된 terminal에서 다시 \dt 명령으로 database의 table을 확인해보면 users table이 생성되어 있음을 볼 수 있습니다. (PostgreSQL에서 user는 예약어이므로 table명으로 사용할 수 없음에 주의합니다.)

     

     

    실제 어떤 데이터가 insert 되었는지 query해보면 Runner class에서 추가한 data가 들어간 것을 확인할 수 있습니다.

     

     

     

     

     


    [Database plug-in 설치와 사용]

    termnial에서 database 다루는 것은 불편한 경우 GUI 기반의 database 관리 tool이나 IntelliJ에서 제공하는 기능을 사용할 수 있습니다. IntelliJ ultimate version을 사용하시는 분들은 제공되는 database 기능을 사용하시면 되고 community version을 사용하시는 분들은  database plug-in을 설치하여 불편함을 해소할 수 있습니다. 여기서는 community version에 Database Navigator plugin을 설치하여 사용하는 방법을 소개할까 합니다. (무엇보다 무료이니 얼마나 좋습니까!)

     

    intellij에서 shift 두번 연속으로 눌러(또는 command+shift+A) action 검색창을 열고 plugins라고 검색합니다.

    Action 중 Plugins를 선택하여 실행합니다.

     

    Plugins 검색창에서 Database Navigator를 검색합니다.

     

    Install button을 click하여 plugin을 설치합니다.

     

    RestartIDE button을 click하여 IntelliJ를 재시작합니다.

     

    IntelliJ가 재시작되면 다시 action 검색 창을 열어 Database Browser를 검색하여 실행합니다.

     

     

    Database Browser를 실행하면 좌측 tab에 추가됩니다.

     

     

    초록색 + button(New Connection)을 click 하여 원하는 종류의 database를 선택합니다. 여기서는 PostgreSQL을 선택하도록 합니다.

     

    DB Navigator  - Settings 창에서 Host, Port, Database, User, Password를 각각 입력합니다.

     

     

    DB 접속에 필요한 data가 입력되었다면 TestConnection button을 click 하여 연결이 정상적으로 이뤄지는지 확인합니다.

     

    문제가 없다면  Apply -> OK 순서로 button을 눌러 설정을 완료합니다.

     

     

    이제 DB Browser 창에 연결된 database의 schema가 노출됩니다.

     

    open SQL Console button을 click후 New SQL Console... 을 선택합니다.

     

     

    생성하고자 하는 SQL console에 적당한 이름을 부여하고 create를 click 하여 console을 생성합니다.

     

    Console에서 사용할 schema를 public으로 설정합니다.

     

    users table을 select 하는 query문을 작성 후 초록색 오른쪽 방향 화살표(Excute statementj) button을 누르면 query가 실행되고 그 결과가 하단의 DB Execution Console에 출력됩니다.

    댓글

Designed by Tistory.