@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
테이블간 연간관계를 설정하기 위한 어노테이션
'프로그래밍 > Spring' 카테고리의 다른 글
[Spring] 스프링 MVC 구조 (0) | 2023.08.10 |
---|---|
[JPA] 테이블 연관관계 정리 (0) | 2023.08.06 |
스프링 부트에서 JSP 파일 못 찾는 이슈 해결 과정 (0) | 2023.07.29 |
[Spring] 변경 감지와 병합(merge) (0) | 2023.07.25 |
[Spring] 컴포넌트 스캔 (0) | 2023.07.16 |
댓글