H2 데이터베이스란?
H2 데이터베이스는 인메모리 데이터베이스(휘발성. 종료되면 모든 메모리 다 삭제)로, 애플리케이션에 내장 (인베드(embed) 데이터) 가능! 그래서 H2는 주로 개발 환경에서 사용하며 일반적인 DB와는 달리 프로그램 구동시 메모리에 데이터를 저장하는 방식으로 동작 * 개발할 때에는 dev에서 H2를 사용할 거고, prod할 때는 진짜 real mySQL과 연동할 것
[ 인베드 ] 서버 실행 시 자동으로 데이터베이스가 설치되는 것
톰캣도 인베드(embed). 톰캣이 내장(인베드)되면 서버를 실행할 때 자동으로 설치되고 설정이 완료된다. 따라서 별도로 톰캣을 설치할 필요가 없다. 그러나... 톰캣과 H2 데이터베이스가 다른 점은... 톰캣은 서버 실행 시에 꺼져도 상관없지만, H2 DB가 그러면..... 서버가 꺼지잖아? 휘발성이라 작성한 데이터가 모두 다 날아갑니다. 물론 인메모리 데이터베이스(H2)를 세팅해서 켤 때마다 똑같은 데이터베이스가 나오게 할 수 있고 방언 설정이 가능하다는 장점도 있다.
[ 방언 설정 ]
H2 데이터베이스의 방언 설정은 다른 데이터베이스와 유사한 기능을 H2에서 사용할 수 있도록 도와주는 것
(= 데이터베이스도 마리아DB 오라클DB 등등 많은데, H2를 사용하면 무슨 데이터베이스를 사용할지 설정 할 수 있음)
H2 데이터베이스 설정하는 코드 설명
[ spring ]
spring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:test;MODE=MySQL username: sa password: //디비 커넥션. h2-console 접속할 때에 입력할 정보 기입 * url 뒤엔 프로토콜 입력 * 방언 설정하는 것 : MODE= * username, password는 뭔지 알지요
[ h2 ]
h2: console: enabled: true //console url 만드는 코드 (웹으로 접근할 수 있게 해주는 코드)
[ jpa / properties ]
jpa: hibernate: ddl-auto: create show-sql: true //서버 실행 시, 발생하는 쿼리를 콘솔창에 띄워줌 properties: //이 아래 3줄은 쿼리 더 예쁘게 보는 설정 hibernate: format_sql: true
더 이쁘게 보이죠?
[ ddl-auto: create ]
서버 실행될 때마다 DDL (Alter, Drop, Create 이런거...) 만들어주는 설정 코드 만약 ddl_auto: none으로 하면 h2콘솔에 테이블이 만들어지지 않는다
generated by default as identity = auto_incrediment
잘 알게 되면 ‘H2 DATABASE 공식 사이트’에서 문서 찾아보고 하기
이렇게 하면 자바에서 코드로 테이블을 만들 수 있구나!!
Share article