JPA는 Java Persistence API
의 약자로 직역하면 자바 지속성 API로 해석되지만 주로 관계형 데이터베이스 관리 API를 뜻한다. 현재 자바 진영 ORM(Object Mapping Model) 기술 표준이고, 데이터베이스 처리를 위한 인터페이스의 모음이다. 데이터베이스 인터페이스를 구현한 대표적인 오픈소스로는 Hibernate
가 있다.
기존 JDBC는 직접 SQL문을 작성하여 데이터베이스를 처리하였지만 JPA는 내부에서 JDBC API를 호출하여 SQL문을 처리한다. 이를 통해 개발자는 SQL중심적인 개발에서 벗어날 수 있다.
JPA와 mysql 의존성을 다음과 같이 pom.xml
파일에 추가하고 Reload
한다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
위의 의존성을 추가하고 contextLoad()
를 실행하면 다음과 같이 테스트는 실패한다.
테스트 실패: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
테스트 실패 원인을 확인해보니 의존성은 추가되었으나 DataSource와 JPA에 필요한 configuration이 설정되지 않은 듯하다. 이를 src/main/resources
의 application.properties
에 추가할 수도 있으나 코드 포맷팅이 깔끔한 application.yml
로 추가하기로 하였다.
스프링 부트는 빌드 시 application.properties
파일 혹은 application.yml
파일의 키/값을 읽어와 실행 시 필요한 값을 주입해준다.
위의 테스트 실패가 발생한 원인인 datasource 적용과 기타 JPA 설정을 해주었다. application.yml
파일에서는 위의 설정과 더불어 서버 address
, port
등을 설정해줄 수 있을 뿐만 아니라 다양한 항목을 설정할 수 있다(참고)!
server:
address: localhost
port: 8080
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
password: db 비밀번호
url: jdbc:mysql://localhost:3306/daily_workout_TEST_DB
username: db 유저네임
jpa:
database: mysql
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
# generate-ddl: true
# show-sql: true
true
로 설정할 가치가 있지만 이는 해당 프로젝트에서 불필요하다고 판단하였으므로 기본 설정인 false
로 설정한다.위와 같이 설정을 완료하고 테스트를 돌려보고 테스트 로그를 확인했을 시 특별한 Exception이 발생하지 않았으면 문제없이 연동이 완료되었다.