부자 되기 위한 블로그, 머니킹

웹 서버를 만들기 위해 필수적인 몇가지 요소가 있는데 그 중 필자가 가장 중요하게 생각하는 부분은 database이다. 정적인 사이트면 데이터베이스를 사용할 필요가 없겠지만 왠만한 웹들은 db를 다 사용할 것이다. 개발할 시에도 db의 세팅이 필요한데 이번 포스팅에서는 spring에 h2 database를 연결하는 방법에 대해서 알아보겠다.

h2 설치

 

https://www.h2database.com/html/download-archive.html

 

Archive Downloads

 

www.h2database.com

위에 h2 공식 사이트이다. 다만 홈에 있는 가장 최신 h2 db 대신 1.4.200 버전을 사용하는 것을 추천한다. 물론 윈도우라면 최신버전으로 쉽게 실행할 수 있지만 유독 맥 쉘에서 ./h2.sh로 실행할 때 최신 버전이 문제가 많다. 기능도 몇개 빠졌다고 하고 쉘에서 볼때 보안 기능을 강화한 것 같은데 h2는 테스트 디비로 사용하는 경우가 많아서 보안 문제로 골칫거리가 많아질 바에는 이전 버전을 사용하는 것이 좋다.

 

윈도우

윈도우의 경우 installler 파일을 다운받은 후 편하게 설치하면 된다.

 

맥에서는 all platform으로 다운받은 후에 terminal로 들어가서 [h2-bin]에 들어간다

cd ~/h2/bin
chmod 755 ./h2.sh

./h2.sh

먼저 bin 파일에 들어가면 h2.sh 파일이 있는데 권한을 설정해줘야한다.

이후 ./sh로 h2를 실행하면 정상적으로 db 실행이 된다.

 

./h2.sh를 했을 때 브라우저를 통해 해당 화면이 보이면 성공한 것이다. 위의 화면은 h2 console이다.

 

 

Spring h2 연결


spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:tcp://localhost/~/test;AUTO_SERVER=true
spring.datasource.username=sa
spring.datasource.password=1234

#hibernate ??
spring.jpa.properties.hibernate.format_sql=false
spring.jpa.properties.hibernate.show_sql=false
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=false

application.properties 에 해당 속성들을 추가해준다.

 

spring.datasource.url은 jdbc url에 있는 것을 그대로 적어주면 된다. 이 때 주의해야 할 점이라면 h2연결 방식이 파일을 통한 embeded 방식과 tcp를 통한 server 방식이 있는데 h2 console만을 사용할 것이라면 embeded도 상관 없지만 대부분 편의성 문제로 db 툴을 사용할 것이다. 이 떄는 tcp로 연결하여 AUTO_SERVER=true로 해줘야 스프링과 db툴에서 동시 접속이 가능하다.

 

이후 username과 password를 입력하고 h2 db에 관한 세부적인 설정을 한다. ddl-auto를 create로 두면 서버를 시작할 때마다 entity 정보를 토대로 새로운 테이블을 생성한다. (이는 테스트 개발일 경우에만 이렇게 설정해야 한다.)

 

 

dbeaver 연결 (db 툴 연결)

db툴에서도 마찬가지로 tcp를 통해 접속한다. port를 비워두고 h2 콘솔에서 서버 연결시 나오는 주소와 완전히 동일해야지 정상적으로 db가 연결된다. db driver은 반드시 h2 server로 해야 한다(h2 embeded로 하면 안된다)