데이터베이스 스키마 자동 생성

  • JPA에서 애플리케이션 로딩 시점에 CREATE 쿼리로 DB 테이블을 생성하는 기능도 지원해준다.
    • 생성된 DDL은 운영단계에서는 사용하면 곤란하다..
    • 보통은 개발단계나 로컬 PC에서 개발할 때 사용한다.
  • 객체 매핑을 다 해 놓으면 테이블이 생성되므로 객체 중심적인 개발이 가능하다.
  • DB 방언을 활용해서 DB에 맞는 적절한 DDL을 생성한다.

DB 스키마 자동 생성 - 속성

  • create
    • 기존 테이블을 삭제 후 다시 생성한다.
    • DROP + CREATE
  • create-drop
    • create와 같지만, 종료시점에 테이블을 DROP한다.
  • update
    • 변경분만 반영한다.
    • 운영DB에서는 사용하면 안된다.
      • 보통은 애플리케이션 코드에서 필요한 업데이트를 수행하도록 구현한다.
  • validate
    • 엔티티와 테이블이 정상 매핑되었는지만 확인한다.
  • none
    • 사용하지 않는다.
    • 그냥 지우거나 아무거나 쓰는거랑 비슷하지만, 관례상 넣는 것.

DB 스키마 자동 생성 - 주의사항

  • 운영 장비에는 절대로 create, create-drop, update를 사용하면 안된다.
  • 개발 초기 단계는 create, update
  • 테스트 서버는 update, validate
    • 여러 개발자들이 함께 사용하는 상황인데, create 사용 시 배포할 때마다 데이터가 날아가버린다.
  • 스테이징과 운영 서버는 validate 또는 none
    • 시스템이 자동으로 ALTER를 해줄 경우 굉장히 위험한 상황 발생 가능.
    • 직접 ALTER 테이블 스크립트를 테스트 서버에 먼저 반영 해보고, 운영 서버에 적용하는게 맞다.
    • 애초에 계정 자체가 ALTER DROP이 불가능하도록 분리해두면 된다.

DDL 생성 기능

    • 애플리케이션 자체보다는 DDL을 자동 생성할 때만 사용된다.
    • JPA 로직에는 영향을 주지 않는다.
    • ex) 회원 이름은 필수이고 10자를 초과할 수 없다.
    • @Column**(nullable = false, length = 10)**제약조건 추가 기능

'Spring > JPA 프로그래밍 - 기본편' 카테고리의 다른 글

기본 키 매핑  (0) 2023.04.14
필드와 컬럼 매핑  (0) 2023.04.13
객체와 테이블 매핑  (0) 2023.04.11
준영속 상태  (0) 2023.04.10
플러시  (0) 2023.04.09