JPA 엔티티 매핑
엔티티 매핑
@Column
- insertable, updatable 등록, 변경 가능 여부 (default = true)
- nullable null허용여부
- columnDefinition 컬럼 정보를 직접 줄 수있다.
@Enumerated
- enum 타입을 매핑 할때 사용
- 순서로 insert하는 ORDINAL은 사용 X, 자바 로직에 순서가 바뀌면 전부 꼬인다.
@Temporal
- 날짜 타입 매핑 (DATE, TIME, TIMESTAMP)
- 최신 자바에서는 LocalDate를 사용하면 위의 설정은 굳이 안해도 상관없다.
private LocalDate localDate; //DATE 로 매핑
private LocalDateTime localDateTime; // Timestamp로 매핑
@Lob
- 타입에 따라 LOB 타입 컬럼 생성(String 일 경우 CLOB, byte 일 경우 BLOB)
기본키 매핑
@Id
- 직접 할당
@GeneratedValue
** ID는 Long을 사용하는것을 권장 **
- IDENTITY : 각 DB에 맞게 알아서 위임 (오라클에서는 GenerationType.SEQUENCE로 Object를 생성 후 사용)
SequenceGenerator 를 사용하여 시퀀스에 대한 자세한 옵션 설정 가능. nextcall로 인해 성능 이슈는 allocationSize를 활용하여 미리 가져와 메모리에서 쓰는방식
- 제약 : entityManager.persist를 호출하는 시점에 바로 DB insert쿼리를 날림 (원래 commit에 날림) JPA가 영속을 하기 위해 persist시점에 insert하고 바로 select해서 id를 가져온다.