Spring/JPA

엔티티 매핑

Seok_IN 2022. 7. 8. 01:50

@Entity

클래스 앞에 붙여 JPA가 관리하여 엔티티라고 한다.

 

DB 스키마 생성 속성

<property name="hiberante.hbm2ddl.atuo" value="create">

 

@Coulmn : 컬럼 매핑

  • name : 필드와 매핑할 테이블의 컬럼 이름
  • insertable, updatable : 등록, 변경 가능여부
  • nullable : null허용 여부
  • unique : 유니크 제약조건
  • columnDefintion : 컬럼 정보 직접 줄 수 있음 (Ex . varchar(100) default 'EMPTY')
  • length : String 타입에만 적용되는 문자길이 제약 조건

@Temporal: 날짜 타입 매핑

@Enumerated : ENUM타입 매핑

- EnumType.String을 사용하자! EnumType.ORDINAL은 순서로 저장이 된다.

@Lob : BLOB, CLOB 매핑

@Transient : 특정 필드를 매핑


기본키 매핑

@Id : 직접할당

@GeneratedValue : 자동생성

  • IDENTITY : DB에 위임
  • SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용, @SequenceGenerator

* SequenceGenerator에서 allocationSize라는 속성이 있는데 이는 DB에 매번 시퀀스를 호출하지 않기 위해서 존재하는 속성이다. https://dololak.tistory.com/479 참고

  • TABLE : 키 생성용 테이블 사용, @TableGenerator
  • AUTO : 방언에 따라 자동지정