# H2 데이터베이스 설치
- 실무에서는 데이터베이스에 데이터를 저장하고 관리한다.
- `H2 데이터베이스`는 교육용으로 굉장히 좋다. 용량도 작고 가볍고 웹으로 어드민 화면도 제공해준다.

---

## H2 데이터베이스
- [H2 데이터베이스](https://www.h2database.com) 압축파일 다운로드 및 설치, h2 데이터베이스 버전은 스프링 부트 버전에 맞춘다.
- 실행파일을 실행(Mac의 경우 권한추가 필요)하면 `H2 콘솔` 창이 뜬다.
    - 권한 주기(Mac): chmod 755 h2.sh
    - 실행(Mac): ./h2.sh
- 이때 포트번호 앞의 ip부분을 `localhost`로 변경하여 접근한다.
- 가장 먼저 데이터베이스 파일을 만들어야 한다.

### 데이터베이스 파일 생성 방법
- `JDBC URL`에 `jdbc:h2:~/test` (최초 한번) 입력후 연결.
- `~/test.mv.db` 파일 생성되었는지 확인(여기서 `~`은 C드라이브의 사용자 폴더(`home`)를 말함)
- 이후부터는 `jdbc:h2:tcp://localhost/~/test` 이렇게 접속한다(파일로 접근하면 애플리케이션이랑 웹 콘솔이랑 동시에 접근이 안되거나 오류가 날 수 있기 때문이다).

![H2 데이터베이스가 정상 생성되지 않을 때](https://user-images.githubusercontent.com/68052095/102915621-72c9b580-44c5-11eb-8daa-923bc58f4308.PNG)

---

## H2 데이터베이스 테이블 생성하기

테이블 관리를 위해 프로젝트 루트에 `sql/ddl.sq` 파일을 생성하여 정리한다.
```
drop table if exists member CASCADE;
create table member
(
id bigint generated by default as identity,
name varchar(255),
primary key (id)
);
```
- 자바의 `Long` 타입은 `DB`에서는 `bigint` 타입으로 선언한다.
- `generated by default as identity`를 선언하면 만약 `null`값, 즉 해당 컬럼에 값을 셋팅하지 않았다면 데이터가 들어왔을 때 `DB`가 자동으로 값을 채워준다.
- 쉽게 말하면 `DB야 너가 알아서 PK값 넣어줘`와 같다.

---