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