애플리케이션 실행 시점에 DDL을 자동 생성
테이블 중심 -> 객체 중심
미리 테이블을 만들지 않아도 되기 때문에 객체 중심의 개발을 할 수 있다.
데이터베이스 방언을 활용해 DB에 맞는 적절한 DDL을 생성
생성된 DDL은 개발 장비에서만 사용
ex) 운영 서버에 hibernate.hbm2ddl.auto 옵션을 create로 적용했다면...?
-> 운영 중인 DB가 초기화 되어버리는 참사가 발생할 수 있다...
링크 : hibernate.hbm2ddl.auto 설정
운영 장비에는 절대 create, create-drop, update 사용하면 안된다.
개발 초기 단계 : create 또는 update
테스트 서버 : update 또는 validate
스테이징과 운영 서버 : validate 또는 none
ex) 해당 컬럼 필수, 10자 초과X
@Column(nullable = false, length = 10)
@Table(uniqueConstraints = {@UniqueConstraint( name = "NAME_AGE_UNIQUE",
columnNames = {"NAME", "AGE"} )})
해당 속성들은 단지 DDL을 자동으로 생성할 때만 사용되고, JPA의 실행 로직에는 아무런 영향을 주지 않는다.
But, 해당 기능을 사용하면 엔티티만 보고 다양한 제약조건을 파악할 수 있다는 장점이 있다.
참고 :
김영한. 『자바 ORM 표준 JPA 프로그래밍』. 에이콘, 2015.