지난 글에서 설치한 H2 Database를 Spring Boot 프로젝트에서 연결해서 매우 간단하게 잘 동작하는지만 확인해본다.
1. Spring Initializer로 프로젝트 만들기
Spring Initializer 웹사이트나, 각자 사용하는 IDE(IntelliJ, 이클립스, VS Code 등)에서 프로젝트를 새로 만든다.
GroupId, ArifactId는 자유롭게 지정한다. 나는 Java 버전 11 + Maven 조합으로 골랐다.
Dependency를 선택할 때 JDBC API, H2 Database를 반드시 선택해준다. 나머지는 자율
* 참고 : 이미 만들어진 프로젝트를 사용한다면, 따로 dependency에 추가
Maven) pom.xml 파일에 아래 내용 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Gradle) build.gradle 파일에 아래 내용 추가
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc', version: '2.5.2'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
runtimeOnly 'com.h2database:h2'
2. 설정
지난 글의 H2 웹 콘솔에서 아래와 같이 동일하게 입력했다는 가정하에...
src/main/resources 아래에 있는 application.properties 파일에 아래 내용을 추가한다.
# H2
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
# schema.sql, data.sql 사용을 위해 추가
spring.sql.init.mode=always
3. 테이블 만들기
resources 디렉토리 아래에 shema.sql , data.sql 파일 2개를 생성한다.
우리는 spring.sql.init.mode=always 라는 설정을 미리 해줬으므로, 아래와 같이 하면 프로젝트를 Run 시킬 때마다 자동으로 Table들을 생성하고, 초기 데이터를 넣어준다. 👍🏻
1) Create
shema.sql 파일 내용
drop table if exists member;
create table member (
id bigint generated by default as identity,
name varchar(255),
primary key (id)
);
2) Insert
data.sql 파일 내용
insert into member(name) values ('irin');
insert into member(name) values ('joy');
insert into member(name) values ('wendy');
4. 실행 후 확인
Spring Boot Application의 Main함수를 실행시키면 잘 돌아간다.
웹 H2 콘솔에서 간단한 쿼리를 날려서 확인해본다. 데이터가 잘 조회되면 커넥션 성공이다.
소스코드 참고
https://github.com/easyfordev/springboot-jdbctemplate-h2-crud-example
'Java > Spring Boot' 카테고리의 다른 글
[Spring Boot] JdbcTemplate - H2 CRUD 예제 (1) (0) | 2021.08.01 |
---|---|
[Spring Boot] @PathVariable 사용법 (0) | 2021.07.15 |
[Spring Boot] H2 Database 설치 (Mac, Linux) (2) | 2021.07.15 |
댓글