앞서 구축한 프로젝트를 바탕으로 H2 DB를 연동해보자.
프로젝트 구조
아래 폴더와 java 파일을 추가한다.
config: 어플리케이션의 config를 정의한다. (여기선 DB Console 경로를 설정한다.)
domain: 하이버네이트를 통해 db에 table을 생성한다. (DDL)
repository: 하이버네이트를 통해 db에 데이터를 조작한다. (DML)
restController: 외부 client에 Rest API 요청을 받는다.
service: 서비스에 필요한 작업을 처리한다.
이번 글에선 config, domain 까지 설정을 해보자
H2 DB 셋팅
config
DBConfig.java는 아래 코드와 같다.
package com.example.demo.config;
import org.h2.server.web.*;
import org.springframework.boot.web.servlet.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DBConfig {
@Bean
public ServletRegistrationBean<?> h2servletRegistration() {
ServletRegistrationBean<?> registration = new ServletRegistrationBean<>(new WebServlet());
registration.addUrlMappings("/console/*");
return registration;
}
}
@Configuration, @Bean을 통해 h2servletRegistration() 메서드를 어플리케이션 컨텍스트가 관리한다. 해당 메서드를 등록 후 /console/로 접근하면 DB Console에 접근할 수 있다.
resources/application.yml
application.properties를 application.yml로 바꾼 후 아래와 같이 설정한다.
spring:
datasource:
driverClassName: org.h2.Driver
url: jdbc:h2:~/test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;AUTO_RECONNECT=TRUE
username: sa
password:
jpa:
hibernate:
ddl-auto: update
DB 접속에 필요한 정보이며, H2 DB는 기본 In-memory DB이기 때문에 영속성이 없는데, 위 설정을 통해 영속성을 가질 수 있다.
domain
Customer.java는 아래 코드와 같다.
package com.example.demo.domain;
import javax.persistence.*;
import lombok.*;
@Entity
@Table (name="customer")
@Data
@NoArgsConstructor @AllArgsConstructor
public class Customer{
@Id
@GeneratedValue
private Integer id;
@Column(nullable = false)
private String firatName;
@Column(nullable = false)
private String lastName;
}
@Entity: 엔티티임을 알리는 애노테이션이다. @Table: 엔티티에 대응하는 테이블 이름을 지정한다. (table: customer)
@Data: 추가한 의존성인 lombok이 제공하는 에노테이션으로, 각 필드의 getter / setter와 toString(), equals(), hashCode() 메서드가 자동으로 생성된다. @NoArgsContructor, AllArgsConstructor: 생성자를 자동으로 생성해주는 에노테이션이다.
@Id: 해당 필드가 기본키 임을 알린다. @GeneratedValue: 기본 키 번호를 자동으로 매긴다. @Column: 객체의 필드와 테이블 칼럼의 이름이나 제약 조건을 설정한다.
위 Customer.java를 구현하면 스프링 부트 어플리케이션 실행 시, 해당 객체를 자동으로 테이블로 생성해준다.
스프링 부트 어플리케이션을 실행 후 localhost:8080/console 로 접속하면 DB Console을 확인할 수 있다.
Note: lombok을 추가하고 getter, setter를 호출 할 수 없는 경우가 있는데, 이는 VSCode에서 Lombok Annotations Support for VS Code 를 추가해주어야 한다.
H2 DB 콘솔 접속
로그인 화면
H2 DB Console 화면
생성된 customer 테이블을 볼 수 있다.
현재 테이블엔 아무런 값도 없기 때문에 insert를 통해 데이터를 입력한다.
그 후 스프링 부트 어플리케이션을 재시작 후에 테이블에 값이 있는지 확인한다.
코드
https://github.com/JaeGeunBang/springboot_sts_tutorial/tree/master/spring_boot_application_2
Comments