-
[JPA] JPA 어노테이션기초/JPA 2022. 10. 8. 17:04
@Entity
더보기JPA가 관리하는 테이블과 매핑할 클래스
- 기본 생성자 필수 ( 파라미터가 없으며 public protected 생성자 )
- final, enum, interface, inner 클래스에 사용할 수 없다. 실제로 구현되며 변경가능한 클래스에만 적용가능
@Table
@Id
더보기기본키
@GenerationType
더보기- IDENTITY : DB에 위임
- 데이터베이스가 식별자를 구하므로 쓰기 지연이 동작하지 않는다. (DB와 한번통신)
- SEQUENCE : DB 시퀀스를 활용한 기본키
- DB의 시퀀스를 사용하므로 DB와 2번통신한다.
- allocationSize : sequence 전략 최적화, 미리 지정된 갯수만큼 시퀀스를 등록한다.
- TABLE : 키 생성 테이블을 사용
- 테이블을 기본키로 사용하므로 모든 DB에 활용 가능하다.
- DB를 2번 통신하므로 최적화는 SEQUENCE와 동일하다.
* JPA는 모든 엔티티에 일관된 방식으로 대리 키 사용을 권장
>> 비지니스 환경의 변화에 민감하게 반응하지 않도록 대리키를 선택
@Column
더보기필드와 컬럼 매핑
@Lob
더보기BLOB, CLOB 참조
@Transient
더보기특정 필드를 DB에 매핑하지 않는다.
@Access
더보기JPA가 엔티티 데이터에 접근하는 방식을 지정한다.
FILED : 필드접근
PROPERTY : 프로퍼티 접근
참조
더보기@ManyToOne, OneToMany, ManyToMany
연관관계 매핑
@ManyToOne (다대일)
optional : false로 설정하면 연관된 엔티티가 항상 있어야 한다.
fetch : 글로벌 페치 전략 ( EAGER, LAZY )
cascade : 영속성 전이 기능 사용.
targetEntity : 연관된 엔티티의 타입 정보 ( 거의 사용 X )
다대다 관계는 사용하지 말자.
M : M 관계를 1 : M : 1 관계로 풀어 사용하자.
@JoinColumn
외래키를 매핑 할 때 사용한다. 생략하게 되면 기본 전략을 사용한다.
name : 매핑할 외래 키 이름 ( 기본 : 필드명 + _ + 참조하는 테이블의 기본 키 컬럼명 )
referencedColumnName : 외래 키가 참조하는 대상 테입르의 컬럼명
foreignKey(DDL) : 테이블을 생성할 때 사용되는 외래키 제약조건 지정
+ Column 속성과 동일 한 옵션들
리팩토링
@Enumerated
더보기enum 클래스를 사용하는 데이터
@Embeddable, @Embedded
더보기벨류 클래스 지정
1급 컬렉션 및 래핑 클래스를 사용하자
이점 : 가장 작은 데이터 클래스에서 검증하므로 이후 사용되는 클래스에서 데이터 검증을 하지 않아도 된다.
@MappedSuperclass
테이블과 매핑하지 않고 매핑 정보만 제공할 때 사용
날짜 (CreateDate, LastModifiedDate) 컬럼처럼 공통된 컬럼을 정의할 때 사용한다.
날짜
@Temporal @CreatedDate @LastModifiedDate
더보기날짜 타입
@CreatedDate
최초 생성한 날짜
@LastModifiedDate
데이터가 변경될 때의 날짜
'기초 > JPA' 카테고리의 다른 글
[JPA] 식별관계, 비식별 관계, 복합키 (0) 2022.10.11 [JPA] 객체간의 매핑 (0) 2022.10.11 [JPA] 연관관계 (0) 2022.10.08 [JPA] 영속성 컨텍스트 (2) 2022.10.08