개요
JPA는 데이터베이스 스키마를 자동으로 생성해 주는 기능을 제공한다.
아래 코드처럼 설정한 데이터베이스 방언에 맞는 DDL을 생성할 수 있다.
데이터베이스 방언이란?
데이터 타입이나 함수평, 페이징 처리 등 각 데이터베이스가 제공하는 고유 기능을 말한다.
특정 데이터베이스에 종속되는 기능을 많이 사용하면 나중에 데이터베이스를 교체하기 어렵다.
이를 해결하기 위해 JPA에서는아래와 같은 방언 클래스들을 제공한다.
- H2 : org.hibernate.dialect.H2Dialect
- MySQL : org.hibernate.dialect.MySQL5InnoDBDialect
- Oracle 10g: org.hibernate.dialect.Oracle10gDialect
스키마 생성 옵션
create
기존 테이블을 삭제한 후 다시 생성한다.
create - drop
기존 테이블을 삭제한 후 재생성한다는 점에서 create와 동일한데, 추가로 종료 시점에 테이블을 drop한다.
테스트 케이스를 작성할 때 주로 사용한다.
validate
엔티티와 테이블이 정상 매핑되었는지 확인할 때 사용한다.
엔티티에만 새로운 필드를 추가하면, DB와 불일치하므로 실행 시 오류가 뜬다.
none
스키마 자동 생성 기능 자체를 사용하지 않는다.
주의할 점
혼자 개발한다면 상관없지만, 협업 시에는 create, create-drop을 사용하면 안 된다.
테스트 서버에서는 update 또는 validate 옵션을 사용하고,
실제 운영 서버에서는 validate 또는 none을 사용하자.
Reference
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
초급자를 위해 준비한 [웹 개발, 백엔드] 강의입니다. JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자
www.inflearn.com