티스토리 뷰

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와 연동해서 테스트 할일이 있으면 이렇게 간단하게 해볼수 있다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30