이 글을 작성하는 시점(2023.2.25)에서, 아래와 같이 구글 검색해보면 깃팟같은 웹IDE에서 h2같이 실습하기 좋은 내장 데이터베이스를 사용하는 법에 대해서 전혀 안알려져 있습니다.
제 글이 아마 세계 최초일 것입니다(그냥 그렇다구요..ㅎ)
어서 제 글이 세계 최초라고 해줘요(찡긋)
이용하는 법이 구글에 전혀 없어서 제가 개척해봤습니다. (리눅스 명령어 조금은 할줄 아므로..)
어서 세계 최초라고 해줘요(찡긋)
아니면 국내 최초라도....
언제어디서나 웹브라우저만 가지고 코딩하거나, 자신만의 노트북이 없거나, 아니면 군입대(ㅋㅋ...)처럼 웹브라우저로 개발환경을 구축하는 사람은 언제나 있을거라고 생각합니다.
gitpod에서는 에디터와 콘솔 환경만 쓸수 있고, 일반 컴퓨터처럼 mysql workbench를 설치해서 db서버를 구축하기가 쉽지 않습니다.
그래서 보통은 aws같은곳에서 db호스팅 서버를 돈주고 사서 gitpod와 연동해서 다루거나 그럽니다. (저도 여태까지 몇천원 내면서 이용해서 백엔드 개발을 했습니다.)
그러나 gitpod 프로젝트 내장에 db 저장소 만들고 호스팅하면 편리하게 실습하고 테스트를 할 수 있습니다.
어려운 환경속에서 공부하는 스프링부트 백엔드 개발자들에게 바칩니다.
h2 dependency 설정
스프링부트 프로젝트와 엔티티는 이미 구축을 해놨다고 가정하겠습니다!
h2 db를 만들고 연결까지만 하는 글이므로..
build.gradle이 의존성 관계를 정의하는 파일로 각종 라이브러리들을 제거 또는 추가하는 파일입니다.
아래와 같이 두 의존성을 추가해줍니다.
build.gradle
dependencies {
// 기존 프로젝트에 두 의존성을 추가합니다
implementation 'org.springframework.boot:spring-boot-starter-web'
runtimeOnly 'com.h2database:h2'
// 자유지만 저는 jpa를 이용해서 프로젝트를 만들었습니다
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
properties 설정
/src/main/resources 폴더안에는 보통 application.properties와 같은 파일로 프로젝트 설정을 해줍니다.
저 같은 경우는 yml을 이용해서 application.properties대신에 application.yml을 이용해서 설정했습니다.
아래에 h2와 datasource에 대한 설정을 해주면 됩니다.
datasource의 url은 db파일 위치,이름을 말하는데, jdbc:h2:~/db이름; 형식으로 작성해주시면 됩니다.
전 jpastore를 예시로 들겠습니다.
application.yml
spring:
h2:
console:
enabled: true
path: /h2-console
settings:
web-allow-others: true
datasource:
url: jdbc:h2:~/jpashop;
username: sa
password:
driverClassName: org.h2.Driver
# 아래 jpa부분은 참고입니다. h2와 datasource부분만 적용시켜주시면 됩니다.
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true
hibernate:
dialect: org.hibernate.dialect.H2Dialect
database-platform: org.hibernate.dialect.H2Dialect
path: /h2-console 부분은 서버를 띄울때 어떤 루트로 접근해서 콘솔을 이용할지 정하는 것입니다.
https://8080-깃팟링크.gitpod.io/h2-console 와 같이 콘솔을 접근하는 것입니다.
application.properties를 이용하는 사람들의 경우는 yml파일 그래도 tab부분들을 아래와 같이 합치면 됩니다.
아래가 예시입니다. 그래도 가급적이면 application.yml을 이용하는 것을 추천합니다..
application.properties
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.h2.console.settings.web-allow-others=true
spring.datasource.url=jdbc:h2:~/jpashop;
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver
스프링부트를 실행하고 해당루트로 이동하면 아래와 같이 나옵니다.
그러나 자신의 db에 연결하려고 아래와 같이 입력하면 아래와 같이 오류가 뜰것입니다.
jpashop이라는 db파일이 존재하지 않아서 오류가 뜨는 것인데, gitpod 콘솔을 이용해서 직접 그 파일을 생성해줘야합니다.
홈디렉터리에 mv.db 파일 생성하기
아래와 같이 깃팟 콘솔에 들어가서 cd ~을 쳐주면 홈디렉터리에 접근할 수 있습니다.
db이름.mv.db라는 빈파일을 생성해야합니다.
touch라는 명령어를 이용해서 생성합니다.
위에서 url설정했을때 봤듯이, jpashop을 예시로 들것이고, url에서 설정한 이름과 파일 이름이 같아야합니다.
명령어 요약
cd ~
touch jpashop.mv.db
h2 콘솔로 접속해서 조회하기
우선 스프링부트 프로젝트를 실행해주고, 생성된링크에서 /h2-console를 붙여서 검색하고 아래와 같이 작성해서 연결합니다.
connect를 눌러주면 sql문을 이용해서 쿼리를 날려주거나 조회할 수 있습니다!
마무리
h2데이터베이스를 연결하는 것을 해봤습니다.
외부 db서버 필요없이, java가 설치된 콘솔환경이면 웹ide든 뭐든 편리하고 빠르게 db를 연결하고 쉽게 테스트할수 있고, 혼자 실습하기에 딱 좋습니다. (RDBMS SQL이라 MySQL이랑 명령어도 똑같을 것입니다.)
제가 aws 유료mysql서버를 이용해서 예전에 개발을 했었는데, 확실히 h2를 이용하니까 훨씬 편하고, 무엇보다 속도가 훨씬 빠릅니다.
'Back-End > 🌱 Spring Boot (java)' 카테고리의 다른 글
[Spring] HTTP 세션의 개념과 로그인 구현 (0) | 2023.05.06 |
---|---|
[Spring] HTTP 쿠키의 개념과 로그인 구현 (0) | 2023.03.27 |
[Spring JPA] 상속관계 엔티티 매핑 전략 (@Inheritance @DiscriminatorColumn) (0) | 2023.02.01 |
[Spring JPA] 엔티티(연관 테이블) 생성하고 일대일,일대다 연관관계(1:1 1:n) 설정하기 (0) | 2023.01.31 |
[Spring 입문] AOP 개념과 간단한 예제 - 메서드 시간측정 (0) | 2023.01.24 |
댓글