본문 바로가기
Tech/Spring

Intellij spring boot 설정

by Augustine™ 2022. 2. 8.
반응형

Spring Web, liquibase, JPA, h2(in-memory)

Intellij initializr 로 spring boot 프로젝트를 설정해보자.

먼저 ORM은 Jpa 로 설정하고, test 를 위한 database 는 in-memory db인 h2 로 설정하자. h2 db는 memory 형식이 아닌 다른 dbms 처럼 installer 형식으로 설치해서 사용할 수 있다. 설치형으로 하려면 아래 포스팅을 참조.

https://augustines.tistory.com/177

 

Spring Boot & H2 DB 를 이용한 CRUD 구현 - 1

Spring Boot와 H2 database를 이용한 CRUD를 구현해보자. H2 database는 embedded server에서 구현할 수 있는 메모리 database다. Spring boot에서는 h2 db에 대한 설정을 쉽게할 수 있다. H2 database의 class na..

augustines.tistory.com

더보기

아직까지 국내에는 mybatis를 많이 쓰고 있지만, 해외에서는 jpa를 많이 쓰고 있다. 이유야 여러가지겠지만, 오랫동안 xml 에 쿼리를 작성하는게 편해서 mybatis를 고집하는 것 같다. 하지만 jpa 에 편리한 점을 알고 나면 다시는 mybatis 로 돌아가는 것을 주저하게 될 것 이다.

그리고 database migration tool은 liquibase로 설정하자. 보통 flyway 를 많이 쓰지만, 요즘 필드에선 liquibase 를 많이 사용하고 있다. 이 역시 호불호가 있겠지만.. 개인적으로 최근에 liquibase 로 프로젝트를 많이 진행하다보니, liquibase 에 좀 더 정이 간다.

그리고 lombok(getter, setter의 자동화), spring web 까지 설정하자.

spring initializr
spring dependencies

Finish 버튼을 누르면 알아서 프로젝트를 만들어 준다.

pom.xml 을 보면 아래와 같으며, 자동적으로 라이브러리를 가져온다.

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

 

이제 각종 설정을 해보자. resource 디렉토리 밑에 application.properties 라는 파일에 각종 설정을 넣으면 된다. 다만, 요즘은 설정도 yml 으로 많이 한다.(이유는 일단 써보면 안다. 매우 편리하다.)

application.properties 를 application.yml 로 바꾸자. 

여기서 설정한 application.yml은 아래와 같다.

server:
  port: 8085  # spring boot server port

spring:
  h2:
    console:
      enabled: true   # use h2 web console
      path: /jpa_db   # path of console

  datasource:
    driver-class-name: org.h2.Driver  # configuration h2 driver
    url: jdbc:h2:~/jpa_db;AUTO_SERVER=TRUE
    username: test
    password: 1234

  liquibase:
    change-log: classpath:db/changelog/db.changelog-master.xml
    enabled: true

h2 db 의 관리자 콘솔을 사용하기 위해서는 enabled 를 true로 지정하고, 관리자 콘솔을 사용할 경로를 지정한다. 그리고 h2 db의 datasource 를 설정한다.

위와 같이 설정하고 start를 하면 아래와 같이 h2 console을 확인할 수 있다.

혹시나 application.yml 에서 설정한 username 과 password로 해도 로그인이 안된다면, JDBC URL을 확인하자. Jdbc url은 application.yml 에서 설정한 url로 지정해야 한다.

그리고 이제 liquibase 를 설정하자.

먼저 change-log를 설정해야 한다. 서버를 시작할 때, 이 파일을 읽고 이 파일에 있는 내용을 실행한다. 

db.changelog-master.xml 라는 파일을 만든 다음, 수행해야 할 업무에 대해 간단히 정의해둔다. 여기서는 user_info 라는 사용자 정보 테이블 하나만 만들어보자.

<?xml version="1.0" encoding="UTF-8" ?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                                    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">

    <include file="db/changelog/create_table-1.0.xml" />
</databaseChangeLog>

그리고 create_table-1.0.xml 파일을 아래와 같이 만들어 보자.

<?xml version="1.0" encoding="UTF-8" ?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                                    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
    <changeSet id="createTable" author="augustine">
        <createTable tableName="USER_INFO">
            <column name="USER_ID" type="VARCHAR(20)">
                <constraints primaryKey="true" />
            </column>
            <column name="USER_NAME" type="VARCHAR(50)">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>
</databaseChangeLog>

Spring Service를 올리면 h2 console 에서 user_info 테이블이 만들어진 것을 확인할 수 있다.

 

다음 포스팅에서는 jpa로 간단한 application을 만들어 보자.

반응형

'Tech > Spring' 카테고리의 다른 글

Spring swagger 적용  (0) 2021.03.09
3. RabbitMQ Example  (0) 2020.02.12
2. Spring RabbitMQ  (0) 2020.02.11
1. Spring AMQP  (0) 2020.02.11
Spring Boot & H2 DB 를 이용한 CRUD 구현 - 1  (1) 2019.09.08

댓글