티스토리 뷰
springboot는 이게 정말 왜 되지? 할 정도로 내장되어 있는 편리한 기능들이 많이 있다. 이번에 소개할 내용도 그렇다. 내부 로직을 까보지 않아서 정확한 동작원리는 파악하지 못했지만 그래도 급하게 DB 연동해서 테스트 할일이 있을때 편리하게 사용할 수 있는 샘플 프로젝트다. springboot 와 embedded hsql db의 조합이다. 빠르게 살펴보자.
프로젝트 생성
New Spring Starter Project 를 통해 프로젝트를 생성한다. dependency는 Spring Data JPA만 넣어준다.
pom.xml
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>runtime</scope>
</dependency>
pom.xml 에는 위와 같이 hsqldb dependency를 추가해준다.
프로젝트 생성이 완료되면 위와 같은 모습일것이고 resources 하위에 schema.sql 파일을 추가해준다.
schema.sql
DROP TABLE employee IF EXISTS;
CREATE TABLE employee (
id BIGINT IDENTITY NOT NULL PRIMARY KEY,
name VARCHAR(20),
address VARCHAR(50)
);
hsqldb의 테이블을 생성해준다. springboot 기동시에 테이블은 생성이 된다.
Employee.java
public class Employee {
private String id;
private String name;
private String address;
public Employee() {
}
public Employee(String id, String name, String address) {
super();
this.id = id;
this.name = name;
this.address = address;
}
// getter and setter 생략
}
결과 데이터를 담을 Model 클래스도 만들어준다.
SampleEmployee.java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
@Component
public class SampleEmployee {
private static final Logger log = LoggerFactory.getLogger(SampleEmployee.class);
private final JdbcTemplate jdbcTemplate;
@Autowired
public SampleEmployee(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Bean
public void dataInsertAndRetrieve() {
jdbcTemplate.update("insert into employee (id, name, address) values (?, ?, ?)", "10001", "홍길동", "서울시 강남구 삼성동");
jdbcTemplate.update("insert into employee (id, name, address) values (?, ?, ?)", "10002", "놀부", "서울시 강북구 미아동");
log.info("### employee data inserted ###");
jdbcTemplate.query("select * from employee", (rs, row) -> new Employee(
rs.getString(1), rs.getString(2), rs.getString(3))
).forEach(employee -> log.info("###" + employee.getName() + " in the database. ###"));
}
}
데이터를 삽입하고 조회하는 초간단 기능을 가진 bean을 만들었다. 끝이다.
datasource나 jdbcTemplate 등에 대해서는 내가 구현하지 않았지만 내부적으로 기본값이 세팅되어 사용할수 있는것 같다. 참 편리한 세상이다. 어떻게 동작을 하는지는 연구를 좀 해봐야겠다.
프로젝트는 springboot가 기동이 되면 bean을 생성하다가 data를 hsqldb에 insert를 하고 또 그 안에 있는 data를 조회하는 것이 전부이다. 이렇게만 구성하고 한번 springboot 기동을 해보자.
내가 의도한대로 employee 라는 테이블에 데이터가 들어갔고 바로 그곳에서 값들을 꺼내는것을 확인하였다. 잘 된다.
이렇게 간단하게 DB와 연동해서 테스트 할일이 있으면 이렇게 간단하게 해볼수 있다.
끝!
'Framework > Spring' 카테고리의 다른 글
Spring Property Value에 Multi Line, List, Array 입력하기 (0) | 2020.11.03 |
---|---|
Springboot application.yml 파일의 값 가져오기 (feat. @Value is null) (3) | 2020.10.30 |
Springboot + RabbitMQ 연동 및 초간단 샘플 프로젝트 만들기 (8) | 2020.10.14 |
springboot 기동 후 바로 종료되는 에러 [extShutdownHook] s.c.a.AnnotationConfigApplicationContext 해결방법 (0) | 2020.10.08 |
Springboot embedded tomcat Session Clustering (JAVA config) (0) | 2020.09.25 |