Spring Boot - H2 데이터베이스 - 설치, 프로젝트 설정, 로컬 서버 생성 (1/3)

반응형

 

# 해당 포스팅은 Gradle Projec로 진행되었습니다.

 

H2 데이터베이스(Database)란?

  • 개발용이나 소규모 프로젝트에서 사용하는 경량화 된 데이터베이스
  • 개발에 초점을 두었기 때문에 개발이 완료되면 MySQL, MSSQL 등의 DB로 재연동

H2 Database 프로젝트에 설치하기 + 편의 라이브러리 추가

  • build.gradle 파일의 dependencies 부분에 아래 코드 추가
    • developmentOnly : 개발환경에서만 적용
    • compileOnly : 컴파일 단계에서만 적용
    • annotationProcessor : 컴파일 단계에서 애너테이션(@)을 분석하고 처리
// build.gradle
dependencies {
	// 개발용 경량화 데이터베이스
	runtimeOnly 'com.h2database:h2'
	
	// 소스 코드 내용 변경시 서버 재시작 없이 서버가 자동으로 재시작해주는 라이브러리
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	
	// getter, setter, 생성자를 자동으로 만들어주는 라이브러리
	compileOnly 'org.projectlombok:lombok'
        annotationProcessor 'org.projectlombok:lombok'
    
    	// DB를 매핑하는 JPA 라이브러리
    	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}

 

  • 그레이들에 추가한 라이브러리 적용을 위한 새로고침
    • 프로젝트 디렉토리 우클릭 - Gradle - Refresh Gradle Project


H2 데이터베이스 사용 설정

application.properties

  • 데이터베이스에 대한 환경 설정 입력, 아래의 코드를 입력 후 자신의 환경에 맞게 수정

 

  • 자바에서 데이터베이스 관리를 위한 JPA 설정

# application.properties

# DATABASE 정보 입력
# 콘솔 접속 허용 여부
spring.h2.console.enabled = true
# 로컬 DB 콘솔 접속 URL = http://localhost:8080/h2
spring.h2.console.path = /h2
# DB 접속 JDBC URL
# 예시) MySQL 로컬 접속 할 경우 jdbc:mysql://localhost:포트번호/테이블이름
spring.datasource.url = jdbc:h2:~/local
# DB 접속에 사용되는 드라이버
spring.datasource.driverClassName = org.h2.Driver
# DB 사용자명
spring.datasource.username = sa
# DB 사용자 비밀번호 (공백 가능)
spring.datasource.password = 1234

# JPA
# 데이터베이스 엔진 종류 : hibernate
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
# spring.jpa.hibernate.ddl-auto 설정
# none - 엔티티가 변경되더라도 데이터베이스를 변경하지 않음
# update - 엔티티의 변경된 부분만 적용
# validate - 변경사항 검사만 진행
# create - 서버가 실행시 모두 삭제하고 데이터 다시 생성
# create-drop - create와 동일하지만 종료시에도 모두 삭제
spring.jpa.hibernate.ddl-auto=update
# 콘솔에서 실행된 쿼리 확인 (테스트용)
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.show_sql=true

h2 환경 설정의 설명 및 셋팅

  • spring.h2.console.path = /h2
    • DB를 접속하는 콘솔 URL의 주소
      • 값('/h2')은 http://localhost:8080 뒤에 붙는 url을 말함
      • '/h2' 를 설정하였기 때문에 http://localhost:8080/h2
  • spring.datasource.url = jdbc:h2:~/local
    • DB 접속 JDBC URL
      • JDBC : 자바에서 DB 접속을 도와주는 API
      • JDBC가 DB를 접근 할 수 있도록 데이터의 위치를 지정
        • 값('jdbc:h2:~/local')은 h2의 홈디렉토리(~)의 'local' 파일의 데이터를 액세스 한다는 의미
        • 예시) MySQL 로컬 접속 할 경우 jdbc:mysql://localhost:포트번호/테이블이름
          • JDBC가 mysql의 로컬서버에서 테이블의 데이터를 액세스 한다는 의미
    • H2 테스트용 DB의 경우 로컬의 데이터가 없기 때문에 데이터를 저장 할 파일이 필요
      • 때문에 DB 파일 없이는 H2 콘솔 사용 불가

<로컬 DB 파일이 없으면 이와 같은 에러가 난다>


H2 로컬 DB 파일 생성

  • 필요한 H2 DB 파일의 확장자는 '.mv.db'로 구성
    • spring.datasource.url = jdbc:h2:~/local' > 홈디렉토리'의 'local' 파일
    • H2 DB 파일은 홈 디렉토리에 있는 'local' 파일의 데이터 액세스
      • ~/'local.mv.db' 파일을 임의로 생성
    • 홈 디렉토리는 현재 운영체제에 로그인한 유저의 기본 폴더를 의미
      • window : C - 사용자(user) - 현재 로그인한 사용자의 이름 폴더 / local.mv.db
      • linux : /home/사용자명 / local.mv.db (홈 디렉토리의 예시를 돕기 위한 리눅스 경로 첨부)

window : c\user/Eunbyeol/local.mv.db
linux : /home/ec2-user/local.mv.db


+ 파일 생성 팁

  • 메모장 실행 - 내용을 입력하지 않고 다른 이름으로 저장

 

  • 파일 이름과 원하는 확장자를 입력 - 저장

 

  • 파일 생성 확인


H2 데이터베이스 작동 확인

  • 서버 실행
    • 스프링 부트는 서버가 자체적으로 내장되어 있으므로 부트 앱으로 실행하면 서버가 실행된다. 
    • Run As - Spring Boot App

 

  • H2 콘솔 화면


로컬 DB 서버 확인

  • application.properties파일에서 설정한 콘솔 URL 입력
    • http://localhost:8080/h2 (spring.h2.console.path = /h2)
  • User Name / Password 입력 - Connect

 

  • 접속 화면

 

  • 다음 포스팅 이어서 보기

https://luvris2.tistory.com/366

 

Spring Boot - H2 데이터베이스 - JPA 엔티티 설정, 리파지토리 설정 (2/3)

JPA 엔티티 설정 (Entity) Entity란? 사전적 의미로는 개체, 실체의 의미 데이터베이스 논리적 구성요소 유형, 무형의 개체로 현실세계에서 사람이 생각하는 개념이나 정보의 단위 JPA의 엔티티는 쉽

luvris2.tistory.com


참고

  • 위키독스 - 점프 투 스프링부트 - JPA

https://wikidocs.net/161164

 

2-03 JPA

* `[완성 소스]` : [https://github.com/pahkey/sbb3/tree/2-03](https://github.com/pahkey/sbb3/tree/2-03) …

wikidocs.net

반응형