본문 바로가기

공부기록용

[ Spring Boot ] 스프링 JPA

JPA ( Java Persistenc API ) 는 ORM ( Object Relational Mapping ) 표준 기술이다.

객체 ( Object ) 관계형 ( Relational ) 매핑하는데 도움을 주는 기술이다.

객체는 자바기반 스프링 ( 도구 ) 에서 클래스로부터 생성된 인스턴스를 의미하고,

RDBMS ( 관계형 데이터베이스 관리 시스템 ) 에 객체를 기반으로 테이블 ( Relational ) 만들어지고,

자바 클래스와 데이터베이스 테이블 간의 매핑 정보를 사용하여 SQL Query 없이 데이터를 조작할 수 있도록

하는 기술이 JPA라는 것, JPA는 API중 하나이자 ORM에 해당한다.

MyBatis도 ORM 이지만 JPA는 MyBatis 보다 더 객체지향적이다.

 

JPA와 스프링 JPA는 다르다.

스프링 JPA는 스프링 환경에서 좀 더 쉽게 JPA를 사용할 수 있도록 도와주는 라이브러리다.

 

Spring Boot 에서 JPA 설정하기

application.properties 파일과 application.yml ( yml → 야믈 이라 읽는다, YAML Ain't Markup Language ) 파일은 스프링 부트 프로젝트에서 사용하는 설정 파일이다. 이 설정 파일에는 데이터베이스 연결 정보나 로그 파일 경로, 서버 포트, 보안 관련 설정 등 다양한 설정을 이 설정 파일에서 지정할 수 있다. .properties 파일과 .yml 파일은 기능은 동일하나 파일 내에 기술해야하는 형식이 다르다.

 

yml 파일 

yml 파일은 계층적 구조를 쉽게 파악할 수 있어 복잡한 구성 설정에 유리하다. 

들여쓰기를 사용해 계층적 구조를 표현하고, 설정 값은 key: value 형식으로 표현한다.

 

properties 파일에 spring.application.name=jpa 라고 작성했다면

yml 파일에서는 다음과 같이 작성한다. yml 파일에서는 들여쓰기가 중요하다.

# Shift+F6 --> 파일명 재설정할 때

#server port change
server:
  port: 8181

spring:
  application:
    name: jpa
  datasource:
    url: jdbc:mysql://localhost:3306/jpa?serverTimezone=Asia/Seoul
    username: mysql 계정명 적기
    password: mysql 비밀번호 적기
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    #show-sql: true --> 자동으로 생성된 쿼리를 보여주는 옵션
    #방언 설정 --> 각 DB에 맞는 쿼리를 설정, 데이터베이스 프로그램마다 사용하는 쿼리가 조금씩 다르다.
    #어떤 데이터베이스 프로그램을 사용할지를 database-platform 에 작성해주기
    database-platform: org.hibernate.dialect.MySQLDialect
    hibernate:
      ddl-auto: update # 자동 DDL 설정 옵션 --> create로 설정하면 클래스 모양대로 테이블 자동 생성
    database: mysql # DB 계열 설정

spring 이라는 가장 최상위의 설정이 있고,

spring에서 application 과 datasource 그리고 jpa 가 갈라지고,

application 에서 name 이 datasource 에서 url, user, password, driver-class-name 이 갈라지고...

이렇게 계층적인 구조로 설정되어 있음을 알 수 있다.

 

MyBatis 를 사용했을 때는 테이블을 만들고, 그 테이블을 보면서 클래스를 디자인 했는데,

스프링 JPA의 경우, 클래스를 먼저 작성할 건데 작성하는 클래스는 테이블이 어떻게 생길지를 생각하며 작성해야 한다.

그리고 서버를 작동하면 작성한 클래스에 기반해서 테이블을 생성해준다 → ddl-auto: create

주의할 점은 ddl-auto: create 로 작성해 놓고 서버를 계속 작동하면

작동할 때마다 테이블을 drop ( 삭제 ) 하고 다시 생성하기를 반복한다.

그래서 한 번 테이블이 생성된 뒤에는 ddl-auto: update 로 변경해주어야 한다.

'공부기록용' 카테고리의 다른 글

[ SQLD ] SQL_Basic DML 240810  (0) 2024.08.10
[ SQLD ] 데이터 모델과 성능 240806  (0) 2024.08.06
[ SQLD ] 실습 240802  (0) 2024.08.02
[ MYSQL ] SELECT절과 WHERE절 실습  (0) 2024.08.01
[ SQLD ] 데이터 모델과 성능 240801  (0) 2024.08.01