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
아직까지 국내에는 mybatis를 많이 쓰고 있지만, 해외에서는 jpa를 많이 쓰고 있다. 이유야 여러가지겠지만, 오랫동안 xml 에 쿼리를 작성하는게 편해서 mybatis를 고집하는 것 같다. 하지만 jpa 에 편리한 점을 알고 나면 다시는 mybatis 로 돌아가는 것을 주저하게 될 것 이다.
그리고 database migration tool은 liquibase로 설정하자. 보통 flyway 를 많이 쓰지만, 요즘 필드에선 liquibase 를 많이 사용하고 있다. 이 역시 호불호가 있겠지만.. 개인적으로 최근에 liquibase 로 프로젝트를 많이 진행하다보니, liquibase 에 좀 더 정이 간다.
그리고 lombok(getter, setter의 자동화), spring web 까지 설정하자.
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 |
댓글