상세 컨텐츠

본문 제목

JPA 데이터베이스 사용하기

스프링부트(Spring Boot)

by 230719 2025. 1. 27. 15:17

본문

ORM(Object Relational Mapping) 이란?

데이터베이스를 관리하려면 SQL 언어를 사용하는 것이 일반적이다. 데이터베이스는 자바를 이해하지 못한다. 하지만 ORM 이라는 도구를 사용하면 자바 문법으로 데이터베이스를 다룰 수 있다.
예를들어,

id comment date
1 hello 0127
2 hi 0128

 

'question' 이란 테이블에 다음과 같은 id, comment, date라는 열이 있다고 가정하자.
이 테이블에 데이터를 저장하기 위해 sql 쿼리문을 다음과 같이 작성한다.

insert into question (id, comment, date) values (1, 'hello', 0127);
insert into question (id, comment, date) values (2, 'hi', 0126);

ORM을 사용하면 이 쿼리문 대신 자바 코드로 작성할 수 있다.

Question q1 = new Question();
q1.setId(1);
q1.setComment('hello');
q1.setDate(0127);
this.questionRepository.save(q1);

Question q2 = new Question();
q2.setId(2);
q2.setComment('hi');
q2.setDate(0126);
this.questionRepository.save(q2);


H2 데이터베이스 설치하기

1) build.gradle 파일의 dependencies에 다음의 코드를 추가한다.

runtimeOnly 'com.h2database:h2'

그 다음 build.gradle 파일을 우클릭해  Gradle -> Refresh Gradle Project를 클릭하여 라이브러리를 설치한다. 

 

2) 설치한 H2 데이터베이스를 사용하려면 src/main/resources 디렉터리의 application.properties 파일에 새로운 설정을 추가해야한다. 

application.properties 파일


이 파일에 다음의 코드를 추가한다.

# DATABASE
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:~/local
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
  • spring.h2.console.enabled: H2 콘솔에 접속할 것인지를 묻는 항목이다. 여기서는 true로 설정한다. H2 콘솔은 H2 데이터베이스를 웹 UI로 보여 준다.
  • spring.h2.console.path: H2 콘솔로 접속하기 위한 URL 경로이다.
  • spring.datasource.url: 데이터베이스에 접속하기 위한 경로이다.
  • spring.datasource.driverClassName: 데이터베이스에 접속할 때 사용하는 드라이버 클래스명이다.
  • spring.datasource.username: 데이터베이스의 사용자명이다(사용자명으로 기본값인 sa로 설정한다.).
  • spring.datasource.password: 데이터베이스의 비밀번호이다(여기서는 로컬에서 개발 용도로만 사용하므로 비밀번호를 설정하지 않고 비워 두었다.).

3) spring.datasourceurl 에 설정한 경로에 해당하는 데이터베이스 파일을 만들어야한다.

현재 url을 jdbc:h2:~/local 로 설정했으므로 사용자의 홈 디렉터리 아래에 H2 데이터베이스 파일로 local.mv.db 라는 파일을 생성해야한다.

이 파일을 생성하기 위해 다음과 같이 명령 프롬프트(터미널)를 실행하자. 사용자의 홈 디렉터리로 이동한다. 그 후 H2 데이터베이스 파일을 생성한다.

cd ~
touch local.mv.db

생성이 잘 되었는지 확인하기 위해 다음과 같은 코드를 입력한다

ls local.mv.db

잘 생성이 된 것을 확인할 수 있다.

 

4) 이제 H2 콘솔을 통해 데이터베이스에 접속할 수 있다. 로컬 서버를 다시 시작한 후에 브라우저에서 다음 URL 주소로 H2 콘솔에 접속하자.
http://localhost:8080/h2-console

 

그러면 이러한 화면이 나타난 걸 볼 수 있다.

6) 언어를 한국어로 변경한 후 JDBC URL 경로를 이전에 application.properties 파일에 설정한 데이터베이스 연결 주소 jdbc:h2:~/local 로 변경하고 연결 버튼을 클릭하자.

이렇게 연결된 화면을 볼 수 있다.

 

JPA 환경 설정하기

H2 데이터베이스를 사용할 준비가 완료되었다. 이제 자바 프로그램에서 H2 데이터베이스를 사용할 수 있게 해야한다. 자바 프로그램에서 데이터베이스에 데이터를 저장하거나 조회하려면 JPA를 사용해야 한다. JPA 를 사용하려면 준비 작업이 필요하다.

JPA(Java Persistence API)란?
ORM 기술 표준으로 사용되는 인터페이스의 모음이다. 실제로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. 

 

1) 다음처럼 build.gradle 파일을 수정하자.

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

 

한번 더 Gradle -> Refresh Gradle Project를 클릭한다.

implementation 이란?
build.gradle 파일에서 작성한 implemetation 은 필요한 라이브러리 설치를 위해 가장 일반적으로 사용하는 설정이다. implementation은 해당 라이브러리가 변경되더라도 이 라이브러리와 연관된 모든 모듈을 컴파일하지 않고 변경된 내용과 관련이 있는 모듈만 컴파일하므로 프로젝트를 리빌드 하는 속도가 빠르다.

 

2) 이번에는 application.properties 파일에 다음과 같은 코드를 추가하자.

# JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
  • spring.jpa.properties.hibernate.dialect: 스프링 부트와 하이버네이트를 함께 사용할 때 필요한 설정 항목이다. 표준 SQL이 아닌 하이버네이트만의 SQL을 사용할 때 필요한 항목으로 하이버네이트의 org.hibernate.dialect.H2Dialect 클래스를 설정했다.
  • spring.jpa.hibernate.ddl-auto: 엔티티를 기준으로 데이터의 테이블을 생성하는 규칙을 설정한다. (개발환경에서는 보통 update를 사용하고, 운영환경에서는 none 또는 validate를 주로 사용한다.)

 

 

관련글 더보기