인텔리제이 테스트 환경에서는 기본으로 h2를 제공해주기 때문에, H2 database를 직접적으로 설치할 일이 많을지는 모르겠다. 하지만 인생은 어떻게 될지 모르니 혹시나 해서 기록해두려 한다.
1. h2 database 접속 후 설치
아래 링크로 들어가자.
그럼 아래와 같은 화면이 보일 것이다.
윈도우 사용자는 Windows Installer를 클릭하면 되지만, 이 포스팅은 맥북 사용자를 위한 포스팅이므로 밑에 빨간 박스에 해당되는 All Platforms zip을 깔아주도록 하자. Mac 전용 cpu (m1 등)에서도 이걸 설치해주면 된다.
2. 설치한 zip 파일 위치 확인
zip 파일의 위치를 사용할 디렉토리로 이동시킨 후, 압축을 풀어주자.
나는 이번에 인프런 강의를 듣던 도중 사용할 일이 생긴 것이기 때문에 인프런 폴더로 이동시킨 후에 압축을 해제했다.
압축을 해제하면 h2/bin 폴더에 h2.sh 라는 파일이 있을 것이다. 이 파일을 실행시키면 h2 db를 이용할 수 있게 된다.
실행 키워드를 디렉토리 이동 후 입력해보자.
./h2.sh & // 실행 키워드. &를 붙여주자.
위 창이 뜨면 성공이다~
참고로 & 명령어를 맨 뒤에 붙이지 않아도 실행 가능하지만, 붙일 경우에 터미널에서 서버를 실행시킨 상태로 유지하여 추가적인 명령을 내려줄 수 있다. & 을 붙이지 않으면 프로세스 실행 시에, 터미널에서 명령어를 내려줄 수 없다.
아래 그림을 참고하자.
2-1. zsh: permission denied: ./h2.sh 가 뜰 경우
./h2.sh를 실행했는데 아래와 같이 실행이 안될 수 있다.
이런. Permission denied가 떴다.
이런 경우에는 아래와 같이 명령어를 입력해주자.
chmod 755 h2.sh
chmod는 접근 권한 제어 리눅스 명령어로, 위 명령어는 소유자에게 모든 권한을 준다는 명령어이다.
위 명령어는 소유 그룹 (현재의 경우에는 그룹은 없다.)과 그 외 사용자에게 쓰기 권한을 제외한 다른 권한들을 부여하는 명령이다.
만약 소유 그룹, 그 외 사용자에게 아무런 권한을 주고 싶지 않다면 700으로 해주면 된다.
만약 읽기 권한만 주고 싶다면 704 또는 744로 해주면 된다.
아래 그림을 참고하면 도움이 될 것이다.
이제 실행을 해주면 아래 창에 접속할 수 있을 것이다~
+) 2-2는 22.06.20 이후에 추가된 내용
2-2. url을 jdbc:h2:mem:testdb로 하지 말자!
jdbc:h2:mem:testdb
혹시 url을 위와 같이 설정했는가? 위처럼 설정해도 들어가지긴 한다.
하지만, 이 url은 말 그대로 testdb이다. 종료될 때마다 데이터가 휘발된다. 만약 이렇게 url을 설정했다면 두 가지 방법이 있다.
- url 뒤에 ;DB_CLOSE_DELAY=-1을 붙여주기
- jdbc:h2:tcp://localhost/~/test 로 url 변경하기
위 두 방법 모두 test.mv_db를 지워주어야 한다. 그렇지 않으면 90048-214 에러가 당신을 계속 괴롭힐 것이며, IDE에서는 계속 테이블이 없다고 궁시렁대는 매우 짜증나는 현상을 겪게 될 것이다.
test.mv.db, test.trace.db를 지우고 h2.sh 실행 후 localhost:8082에서 url을 변경해주면 된다.
2-3. 안전하게 h2 database 종료하기
컴퓨터를 그냥 꺼버리는 방법도 하나의 방법이다.
이 방법은 h2 프로세스를 컴퓨터를 끄지 않은 상태로 종료시키고 싶을 때 사용해보자.
아래 명령어를 입력해주어 h2 database가 어떤 포트의 pid에서 돌아가는지 확인해주자.
ps -ef | grep h2
70328번, 70335번 pid에서 h2가 실행되고 있음을 확인할 수 있다.
이제 아래 명령어로 안전하게 프로세스를 종료시켜주자.
kill -15 {pid 번호} // 종료
kill -9 {pid 번호} // 강제 종료
위와 같이 두 pid에서의 프로세스를 종료시켜주자.
안전하게 h2가 종료된 것을 확인할 수 있다.
리눅스 명령어를 알아두면 확실히 어떠한 문제가 발생했을 때 해결할 확률이 높아지는 듯하다.
이번에도 리눅스 명령어 덕분에 h2 db 설치를 편하게 할 수 있었던 듯하다.
'JAVA > JPA 학습기록' 카테고리의 다른 글
[JPA] Spring Data JPA로 생성일자, 수정일자 컬럼을 간단히 추가하자 (2) | 2022.07.29 |
---|---|
[JPA] 양방향 연관관계에서 JPA 내부 작동 원리_영속성 컨텍스트의 이해 (0) | 2022.06.23 |
[JPA] 자바 ORM 표준 JPA 프로그래밍 - 기본편 후기 (0) | 2021.10.26 |
[JPA] JPQL 조건식_ Case When, COALESCE (0) | 2021.07.07 |
[JPA] JPA에서 SQL 쿼리를 작성하는 방법_ JPQL (0) | 2021.06.09 |