[Spring JPA] ddl-auto 기능은 무엇일까?

최동근·2022년 12월 14일
0

스프링부트

목록 보기
5/13
post-thumbnail

안녕하세요 오늘은 ddl-auto 기능에 대해 알아보겠습니다.

✏️ DDL 이란

데이터 정의어(Data Definition Language, DDL) 은 데이터베이스 테이블(스키마)의 생성, 변경, 삭제를 담당하는 명령어 입니다.
대표적으로 CREATE, ALTER, DROP, RENAME, TRUNCATE 가 있습니다.

DDL 말고도 DML, DCL 이 있습니다. 해당 개념에 대해서는 여기 를 참고해주세요 👨‍💻

✏️ DDL 자동 생성

이번 포스팅의 주제인 ddl-auto 는 데이터베이스의 테이블을 JPA 의 구현체가 자동으로 생성해주는 기능을 말합니다. 테이블 자동 생성 전략 이라고 불립니다.
데이터베이스에는 다양한 dialect 가 존재하는데 JPA 구현체는 application.yml 에 지정되어 있는 dialect 에 맞는 적정한 DDL을 생성합니다.
자 그렇다면 ddl-auto 에는 어떤 속성이 있는지 알아봅시다!

속성기능
create기존 테이블을 삭제 후 다시 생성한다.
create-dropcreate + 서버 종료시 테이블 삭제한다.
update변경 부분만 반영한다.
validate엔티티와 테이블이 정상 매핑 되었는지만 확인한다.
none아무 기능도 하지 않는다.

ddl-auto 는 이렇게 5가지 속성을 제공하며 해당 기능을 통해 개발자는 직접 DDL 을 생성할 필요 없이 데이터베이스를 관리할 수 있게 됩니다.

✏️ ddl-auto 사용법

ddl-autoapplication-properties(yml) 을 통해 사용할 수 있습니다.

spring:
  h2:
    console:
      enabled: true
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:test
    username: sa
    password: 1111

  jpa:
    open-in-view: false
    hibernate:
      ddl-auto: create // spring.jpa.ddl-auto 를 통해 설정 가능
    properties:
      hibernate:
        show_sql: true
        format_sql: true
    defer-datasource-initialization: true

해당 코드는 실제 프로젝트 진행시 사용했던 application.yml 파일입니다 👨‍💻

✏️ 올바른 ddl-auto 사용법

위에서 알아본바와 같이 ddl-auto 는 개발자의 수고를 덜어줄 수 있는 기능입니다.
하지만 각별한 주의를 기울여 사용해야합니다 ☢️
왜냐하면 해당 기능을 잘못된 경우에 사용시 중요한 데이터가 날아갈 수 있으며, 서버에 큰 에러가 발생할 수도 있기 때문입니다 😰

  • 실제 운영 서버에서는 create, create-drop, update 절때 사용 금지
  • 개발 초기 단계에서는 create, update 사용
  • 테스트 서버에서는 update,validate 사용
  • 스테이징 서버와 운영 서버에서는 validate , none 사용

실제 운영 서버에서는 직접 쿼리를 날리는 것이 좋습니다 👍


참고

JPA ddl-auto 설정과 더미데이터 생성 방법
ddl-auto 옵션 관련 주의할 점

profile
비즈니스가치를추구하는개발자

0개의 댓글