JPA - 02. 엔티티 매핑
엔티티 매핑
@Entity
- JPA가 관리할 엔티티를 클래스에 지정
- 필수 에노테이션
- 파라미터가 없는 기본 생성자 필수
- pulbic or protected
- DB에 저장할 필드에는 final을 사용해선 안 됨
@Table
- DB의 테이블명에 알맞게 매핑할 수 있게 해줌
- ex) - @Table(name = “Meber”)
- uniqueConstraints 옵션으로 유니크 제약 조건을 지정함
@Column
- DB의 컬럼과 Class의 필드를 매핑
- DDL 생성 기능으로 제약을 걸 수 있음
- unique - 유니크 제약 조건 (이름을 설정할 수 없어서 잘 쓰지 않고 @Table에서 걸어버림)
- nullable - null 제약 조건
- length - 문자 길이 제약 조건 (String에서만 사용)
- columnDefinition - 직접 컬럼 정보 입력 가능
DDL 생성 기능
DDL을 생성하는 시점에만 사용되고, JPA의 실행 로직 자체에는 아무런 영향을 주지 않는 기능
@Enumerated
- enum 타입을 매핑할 때 사용
- ORDINAL(순서대로 번호 부여) 옵션이 아닌 STRING(필드명) 옵션으로 사용!!!
@Lob
- 지정 가능한 속성이 없음
- 문자면 CLOB, 나머지는 BLOB으로 매핑
- 큰 컨텐츠를 넣고 싶은 경우 사용
@Transient
- 필드 매핑을 하지 않는 용도
- 메모리상에서만 임시로 어떤 값을 보관하고 싶은 경우 사용
DB 스키마 자동 생성 속성 정리
옵션 | 설명 |
---|---|
create | 기존 테이블 삭제 후 재생성 (DROP + CREATE) |
create-drop | 테이블 생성 후, 종료 시점에 테이블 DROP |
update | 변경된 부분(추가)만 반영 (운영 DB에서 사용 X) |
validate | 엔티티와 테이블이 정상 매핑됐나만 확인 |
none | 사용 X |
- 자동으로 생성된 DB 스키마를 그대로 쓰지 말고, 다듬어서 사용하자!!!
- 추천 속성
- 개발 초기 : create or update
- 테스트 : update or validate
- 스테이징, 운영 : validate or none
댓글남기기