JPA mysql 연동하기

재키·2021년 2월 16일
0

스프링 부트

목록 보기
3/3

1. JPA

JPA는 Java Persistence API의 약자로 직역하면 자바 지속성 API로 해석되지만 주로 관계형 데이터베이스 관리 API를 뜻한다. 현재 자바 진영 ORM(Object Mapping Model) 기술 표준이고, 데이터베이스 처리를 위한 인터페이스의 모음이다. 데이터베이스 인터페이스를 구현한 대표적인 오픈소스로는 Hibernate가 있다.
기존 JDBC는 직접 SQL문을 작성하여 데이터베이스를 처리하였지만 JPA는 내부에서 JDBC API를 호출하여 SQL문을 처리한다. 이를 통해 개발자는 SQL중심적인 개발에서 벗어날 수 있다.

2. Maven 의존성 추가

JPA와 mysql 의존성을 다음과 같이 pom.xml 파일에 추가하고 Reload한다.

  • spring-boot-starter-data-jpa
  • mysql-connector-java
<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/resourcesapplication.properties에 추가할 수도 있으나 코드 포맷팅이 깔끔한 application.yml로 추가하기로 하였다.

3. 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
  • generate-ddl: 해당 데이터베이스를 근거로 서버 시작시에 DDL(Data Definition Language)을 생성하여 DB에 적용한다. 현재 적용할 DDL이 없으므로 해당 설정을 true로 설정하였다면 테스트 실행 시 실패한다. 추후에 서버 시작시에 db 초기화 시 이를 적용해볼 계획이다.
  • show-sql: JPA가 db에 날리는 모든 쿼리를 보여준다. 모든 쿼리를 로깅 시 해당 설정을 true로 설정할 가치가 있지만 이는 해당 프로젝트에서 불필요하다고 판단하였으므로 기본 설정인 false로 설정한다.

위와 같이 설정을 완료하고 테스트를 돌려보고 테스트 로그를 확인했을 시 특별한 Exception이 발생하지 않았으면 문제없이 연동이 완료되었다.

profile
기초를 탄탄히!

0개의 댓글