본문 바로가기
프로그래밍/Spring

[JPA] 어노테이션 정리

by YuminK 2023. 8. 5.

@Entity

@Entity가 붙은 클래스는 JPA가 관리하는 엔티티이다. 

기본 생성자를 필수적으로 가지고 있어야 한다.

final 클래스와 enum, interface, inner 클래스에는 사용되지 않는다. 

저장할 필드에 final을 붙이지 말아야 한다. (너무 당연한 이야기)

 

@Table

운영 장비에서 절대 create, create-drop, update 속성을 사용하지 마라.

초기 단계에는 create 또는 update

테스트 서버는 update 또는 validate

스테이징과 운영 서버는 validate 또는 none

 

@Column

name: 이름

insertable, updatable: 데이터 추가 여부 / 업데이트 가능 여부

Length: 길이

Column Definition: 직접 생성 쿼리를 작성하고 싶은 경우

 

@Enumerated(EnumType.STRING)

자바 enum에 대한 매핑

EnumType.ORINAL은 enum 순서 변경시 의미가 달라지므로 STRING을 사용하도록 한다. 

 

@Lob

BLOB, CLOB 타입

 

@Transient

DB와 상관없이 메모리용 필드

 

@Temporal(TemporalType.TIIMESTAMP)

날짜에 사용하는 매핑

최신 하이버네이트의 경우에는 LocalDate, LocalDateTime 타입만 사용해도 된다. (어노테이션 없이)

 

@Id

기본키 매핑

 

@GeneratedValue

기본이 GenerationType.IDENTITY로 DB에게 자동으로 생성을 맡긴다. (MYSQL의 Auto Increment)

일반적으로 커밋 시점에 쿼리가 날라가지만, 영속하는 시점(persiste)에 쿼리를 날려 이후 id 값을 사용할 수 있다.

 

기본키 매핑)

서비스의 생명주기까지 만족하는 자연키(주민등록번호, 전화번호 등)은 찾기 어렵다. 

Long + 대체키 + 키 생성 전략 사용을 권장한다.

 

@ManyToOne

@OneToMany

@OneToOne

@ManyToMany

테이블간 연간관계를 설정하기 위한 어노테이션

댓글