V-RIS 개발일지 (8) database 연동(MySQL, Spring Data Jpa)

KHJ·2022년 5월 2일
0

V-RIS 개발일지

목록 보기
8/15

JDBC -> Spring Data Jpa

처음엔 그냥 익숙한 JDBC를 이용하려고 했다

그러다 spring 공부를 위해 팀원들과 듣고 있던 강의에서 Spring Data Jpa를 처음 접하게 되었고, 인터페이스만 작성하면 반복되는 CRUD를 편리하게 해결할 수 있다는 점이 끌려 회의 끝에 Spring Data Jpa로 변경하게 되었다.


JPA란?

Spring Data Jpa를 알기 위해서는 JPA부터 알아야 한다.

JPA : Java Persistence Api
자바의 ORM 기술 표준으로, 인터페이스의 모음

  • ORM : Object Relational Mapping
             객체와 관계형 데이터베이스를 매핑해 준다는 뜻이다.
             객체는 객체대로 설계하고 관계형 DB는 DB에 맞도록 설계한 후,
                ORM 프레임워크가 중간에서 매핑해 준다.

JPA는 인터페이스의 모음이므로 실제로 동작하는 것이 아님

JPA는 어플리케이션과 JDBC 사이에서 동작한다.
개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용하여 SQL을 호출, DB와 통신한다.

JPA를 사용하면

  • 객체 중심적인 개발 가능
  • 생산성과 유지보수
  • 성능
  • 패러다임 불일치 해결

등의 측면에서 생산성을 증가시킬 수 있다.


Spring Data Jpa란?

스프링에서 JPA를 더 편리하게 사용할 수 있도록 저장소(repository)를 지원하는 스프링 모듈이다.

데이터 접근 계층을 개발할 때 반복되는 CRUD 문제를 해결할 수 있게 해준다.

Repository를 상속받은 인터페이스를 생성하기만 하면 기본적인 CRUD 기능을 제공해준다.
(물론 쿼리문 직접 구현도 가능!)

내가 실제로 구현한 코드들은 다음 포스트에서 다루고, 이번 포스트에서는 기본 설정 방법만 다루려고 한다.

  1. build.gradle에 다음을 추가
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
  1. application.properties에 다음을 추가
# DB Source URL
spring.datasource.url=jdbc:mysql://localhost:3306/스키마명?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul

# DB username
spring.datasource.username=아이디

# DB password
spring.datasource.password=비밀번호

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# mysql 설정
spring.jpa.database=mysql

spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

# DDL(create, alter, drop) 옵션
spring.jpa.hibernate.ddl-auto=update

logging.level.org.hibernate=info

# hibernate가 db에 보내는 모든 쿼리문 보여줌
spring.jpa.properties.hibernate.show_sql=true

# 보이는 query를 가독성 좋게 formatting
spring.jpa.properties.hibernate.format_sql=true

# 추가적인 주석 표시하기
spring.jpa.properties.hibernate.use_sql_comments=true


DDL 옵션

이전 개발일지 7번과 마찬가지로 DDL 옵션을 설정하면 된다.

DDL 옵션의 종류는 create, create-drop, update, validate, none이 있다.

  • create         : 기존 테이블 삭제 후 다시 생성
  • create-drop  : create와 같으나 종료 시점에서 drop
  • update        : 변경 부분만 반영
  • validate       : entity와 테이블이 정상 매핑되었는지만 확인
  • none          : 사용하지 않음



IntelliJ에서 DB 연결 확인하기

위 사진과 같이 User와 Password, Database 입력 후 Test Connection 클릭했을 때 Succeeded가 나오면 정상적으로 연결된 것이다.

1개의 댓글

comment-user-thumbnail
2022년 5월 2일

열공하는 khj님 멋져요~~~!

답글 달기