Spring Boot 3에서 JPA를 연동하는 방법을 설명드리겠습니다.
(Maven, Gradle 포함)
연동 준비
데이터베이스 생성
프로젝트에서 사용할 데이터베이스를 생성합니다.
spring_boot라는 데이터베이스를 생성하였습니다.
의존성 추가
maven
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
...
</dependencies>
gradle
dependencies {
...
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.mysql:mysql-connector-j'
...
}
연결 정보 설정
application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/spring_boot
username: <연결할 계정명>
password: <비밀번호>
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/spring_boot
spring.datasource.username=<연결할 계정명>
spring.datasource.password=<비밀번호>
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
연동 확인
프로젝트를 실행했을 때 다음과 같은 로그가 나오면 연결에 성공한겁니다.
테이블 생성
JPA를 활용해서 데이터베이스에 테이블을 생성해보겠습니다.
엔티티 생성
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class Test {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
private String name;
}
Test라는 이름을 가진 엔티티를 생성하였습니다.
Spring Boot 3이라서 java.persistence 패키지가 아니라 jakarta.persistence 패키지가 사용되었습니다.
이전에 데이터베이스 연결 설정에서 ddl-auto 옵션을 update로 설정하였습니다.
그래서 프로젝트를 시작하면 JPA에 의해 Test 엔티티 정보로 테이블을 생성합니다.
쿼리 로그 확인
JPA가 어떻게 쿼리를 만들어서 테이블을 생성하는지 확인하려면 로그 설정을 추가해야 합니다.
application.yml
logging:
level:
org.hibernate.SQL: debug
application.properties
logging.level.org.hibernate.SQL=debug
설정하고 프로젝트를 실행하면 JPA가 생성한 CREATE TABLE 쿼리를 확인할 수 있습니다.
create table test (id bigint not null auto_increment, name varchar(255), primary key (id)) engine=InnoDB 쿼리로 테이블을 생성했다는 것을 알 수 있습니다.
읽으면 좋은 글
[Java] Spring Boot JpaRepository 사용법 정리