728x90
※ 본 글은 저자 김영한 개발자의 "자바 ORM 표준 JPA 프로그래밍"의 내용을 요약하였습니다. ※
구현체의 ddl auto 속성을 사용하여 JPA의 데이터베이스 별로 DDL를 생성하는 데, 이는 데이터베이스 방언에 따라 변한다
Hibernate ddl auto 속성은 다음과 같다.
Hibernate DDL auto 속성
- create: 기존 테이블을 삭제하고 새로 생성한다. Drop → Create
- create-drop: create 속성에 추가로 애플리케이션을 종료할 때 Drop(DDL 제거)한다.
- update: 데이터베이스 테이블과 엔티티 매핑정보를 비교해서 변경사항만 수정한다. (ALTER)
- validate: 데이터베이스 테이블과 엔티티 매핑정보를 비교해서 차이가 있다면 경고를 남기고 애플리케이션을 실행하지 않는다.
- none: 자동 생성 기능을 사용하지 않는다. 유효하지않는 옵션값을 사용하면 된다. (none은 유효하지않는 옵션값이다.)
추천 전략
- 초기화 상태로 자동화된 테스트를 진행하는 개발 환경과 CI서버: create & create-drop
- 테스트 서버는 update & validate
- 스테이징과 운영 서버는 validate 혹은 none
DDL 생성 기능
@Column
- nullable: default false, true일 경우 DDL에 (mysql 기준) NOT NULL 옵션이 들어가게 된다.
- length: default 255, 문자, 문자열인 경우 길이를 정할 때 사용되는 옵션이 들어가게 된다.
- name: default 변수명, 칼럼명을 정한다.
@Table
@Table의 유니크 제약조건을 걸 수 있다.
기존 @Table(name = "") 옵션을 사용하여 매핑명을 정할 수 있지만 이는 제외두고 유니크 제약조건을 걸 수 있다.
(mysql 기준, UNIQUE)
@Table(uniqueConstraints = {
@UniqueConstraints(name = "NAME_UNIQUE", columnName = {"NAME"})
}
@Id
키 생성 전략 전략을 사용하려면 반드시 Hibernate의 new_generator_mappings를 반드시 true 속성을 추가해야한다.
(※기존 Hibernate 시스템을 유지보수하는 것이 아니라면 반드시 true로 설정하자)
(※참고로 이 옵션을 true로 설정하면 키 생성 성능을 최적화하는 allocationSize 속성을 사용하는 방식이 달라진다)
@Id 어노테이션으로 키를 매핑할 수 있는 타입이 따로 정해져있는 데 이는 다음과 같다.
- 자바 기본형 (Primary)
- 자바 래퍼형 (Wrapper)
- String
- java.util.Date
- java.sql.Date
- BigDecimal
- BigInteger
위 클래스를 상속한 몇몇의 클래스들 역시 키로 매핑할 수 있다.
다음 포스트는 @Id, 기본키 할당 전략이다. (영속성 관리는 따로 추후 올릴 예정이다.)
이상입니다.
JPA 130/735 페이지
'Spring > JPA' 카테고리의 다른 글
[Spring/JPA] 벌크 연산(Bulk Operation)과 EntityGraph (0) | 2023.02.13 |
---|---|
[Spring/JPA] JPA 연관관계 (0) | 2023.02.13 |
[Spring/JPA] EntityManager, EntityManagerFactory (0) | 2022.06.03 |
[Spring/JPA] JPA 객체 매핑 (0) | 2022.05.27 |
[Spring/JPA] JPA 소개 (0) | 2022.05.25 |