JPA 란?
스프링부트는 JPA(Java Persistence API)를 사용하여 데이터베이스를 처리한다. JPA는 자바 진영에서 ORM(Object-Relational Mapping)의 기술 표준으로 사용하는 인터페이스의 모음이다.
JPA는 인터페이스이다. 따라서 인터페이스를 구현하는 실제 클래스가 필요하다. JPA를 구현한 대표적인 실제 클래스에는 하이버네이트(Hibernate)가 있다. 보통 JPA + 하이버네이트 조합을 사용한다.
H2 데이터베이스
JPA를 사용하기 전에 데이터를 저장할 데이터베이스를 설치해 보자. 개발시에는 Oracle, MSSQL 등의 굵직한 데이터베이스 보다는 설치도 쉽고 사용도 편리한 H2 데이터베이스를 많이 사용한다.
H2 데이터베이스는 주로 개발용이나 소규모 프로젝트에서 사용되는 파일 기반의 경량 데이터베이스이다. 개발시에는 H2를 사용하여 빠르게 개발하고 실제 운영시스템은 좀 더 규모있는 DB를 사용하는 것이 일반적인 개발 패턴이다.
H2 데이터베이스를 사용하기 위해, dependencies에 runtimeOnly 'com.h2database:h2' 코드를 추가해준다.

runtimeOnly
build.gradle 파일의 runtimeOnly는 해당 라이브러리가 런타임(Runtime)시에만 필요한 경우에 사용한다. 컴파일(Compile)시에만 필요한 경우에는 runtimeOnly 대신 compileOnly를 사용한다.
H2 데이터베이스를 설치했다고 바로 사용 가능할 것이라고 생각했다면 오산이다. application.properties 파일을 다음과 같이 수정해주어야만 비로소 사용할 수 있다.

각각의 항목에 대해서 알아보자.
- spring.h2.console.enabled - H2 콘솔의 접속을 허용할지의 여부이다. true로 설정한다. false로 설정하면 접속 안된다.
- spring.h2.console.path - 콘솔 접속을 위한 URL 경로이다. 즉, http://localhost:8080/h2-console 주소로 접속한다.
- spring.datasource.url - 데이터베이스 접속을 위한 경로이다.
- spring.datasource.driverClassName - 데이터베이스 접속시 사용하는 드라이버이다.
- spring.datasource.username - 데이터베이스의 사용자명이다. (사용자명은 기본 값인 sa로 설정한다.)
- spring.datasource.password - 데이터베이스의 패스워드이다. 로컬 개발 용도로만 사용하기 때문에 패스워드는 없어도 무방하다.
그리고 spring.datasource.url에 설정한 경로에 해당하는 데이터베이스 파일을 만들어야 한다. 위에서 spring.datasource.url을 jdbc:h2:~/local 로 설정했기 때문에 사용자의 홈디렉터리(~ 에 해당하는 경로) 밑에 local.mv.db 라는 파일을 생성해야 한다. 만약 jdbc:h2:~/test라고 설정했다면 test.mv.db 라는 파일을 생성해야 한다.
사용자의 홈디렉터리는 윈도우의 경우에는 C:\Users\(사용자명) 이고 맥OS의 경우에는 /Users/(사용자명) 이다. 본인이 사용하는 OS에 맞는 홈디렉터리에 local.mv.db 파일을 생성하자. 파일은 내용 없이 빈파일로 생성한다. 필자는 윈도우를 쓰기 때문에 C:\Users\(사용자명)에 local.mv.db 파일을 생성해주었다.
참고로 파일이 생성되지 않았을 때는 아무리 연결을 시도해도 연결되지 않는다.
파일이 다 생성되었다는 전제 하에,
http://localhost:8080/h2-console 주소로 접속하면, 다음과 같은 화면이 뜰 것이다(한국어 설정은 따로 해야한다)

여기서, 위 화면과 같이 JDBC URL 경로를 application.properties 파일에 설정한 jdbc:h2:~/local로 변경하고 "연결" 버튼을 눌러보자.(처음에는 local이 아니라 test로 되어있을 것이다. 변경 후에 연결 시험 누르지 말고 바로 연결 누르자)

그러면 위와 같은 화면이 나타날 것이다(반드시 선행 과정을 잘 따라와야 한다. 하나라도 잘못되면 위 화면을 보기 힘들 것이다) 옆의 ANSWER과 QUESTION은 나중에 설명할 것이니 우선은 넘어가자.
자, 이제 H2 데이터베이스를 사용할 준비는 다 완료되었다. 이제 자바 프로그램에서 H2 데이터베이스를 사용할 수 있게 해야한다. 자바 프로그램에서 데이터베이스에 데이터를 저장하거나 조회하려면 JPA를 사용해야 한다. 이 과정은 다음 포스팅에서 설명하도록 하겠다.
'백엔드 > Springboot' 카테고리의 다른 글
엔티티(Entity) -1- (0) | 2023.09.17 |
---|---|
JPA 환경설정 (0) | 2023.09.17 |
ORM(Object Relational Mapping) (0) | 2023.09.17 |
컨트롤러 (0) | 2023.09.17 |
스프링부트 프로젝트의 구조 (0) | 2023.09.16 |