ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by Tistory.