Yeji's Tech Notes
article thumbnail
Published 2021. 12. 26. 18:42
springBoot-H2database연동하기 Spring
반응형

이번 포스팅은 springBoot project에 H2database를 연동하는 방법을 글로 작성해보았습니다.

 

gradle설정

gradle에 h2, jdbc 설정값추가

저는 jpa도 같이 활용하기 위해서 jpa설정값도 추가해줬습니다.

 

application.properties추가

spring.datasource.url=jdbc:h2:mem:test 
spring.datasource.username=sa			
spring.datasource.password=				
spring.datasource.driverClassName=org.h2.Driver	
spring.jpa.database-platform=H2
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop	
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.sql.init.schema-locations=classpath:h2/schema.sql

- jdbc:h2:mem:test <- Database 명

: Embedded 설정값

in-memoryDB사용시에는 jdbc:h2:mem:(DB명)으로 설정해줘야합니다.

: Server 설정값

jdbc:h2:tcp://localhost/~/(DB명) # Tcp, Server 모드 주소 설정

- ddl-auto

: create-drop은 테이블이 없으면 테이블을 자동생성해줍니다.

- console.enabled

: h2콘솔사용여부, 사용할 경우 console.path를 지정해줍니다.

- schema-locations

: 프로젝트 최초 실행시 스키마 동작파일 위치

resources/h2/schema.sql

DROP TABLE IF EXISTS users;

CREATE TABLE users(
    id INT PRIMARY KEY,
    user_id VARCHAR(30),
    user_password VARCHAR(100),
    user_repassword VARCHAR(100),
    name VARCHAR(30)
);

 

console열기

http://localhost:8080/h2-console

 

h2콜솔이 정상적으로 열리는 것을 확인할 수 있었습니다.

 

* 시행착오

STS프로젝트내에서는 정상동작, 외장 tomcat사용시 h2DB가 동작안함

: 제 생각에는 설정값을 어떻게 주냐에 따라 외장톰캣에서도 사용할 수 있었던 것같습니다.

initialize: true <- 해당 설정값을 true로 해줘야 .sql파일을 정상적으로 읽을 수 있었습니다.

 

* 주의사항

ddl-auto 옵션

  • create: 기존테이블 삭제 후 다시 생성 (DROP + CREATE)
  • create-drop: create와 같으나 종료시점에 테이블 DROP
  • update: 변경분만 반영
  • validate: 엔티티와 테이블이 정상 매핑되었는지만 확인
  • none: 사용하지 않음

실제 운영서버에서는 create,create-drop,update는 사용하면 안됩니다.

현재 제가 설정한 DB는 휘발성이므로 설정값을 create-drop으로 주었습니다.

 

반응형
profile

Yeji's Tech Notes

@Jop

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!