• Feed
  • Explore
  • Ranking
/
/
    JPA

    Entity Mapping

    EntityMapping
    새
    새로운시작초코파이
    2024.11.28
    ·
    3 min read

    Entity Mapping

    @Entity

    • 도메인 객체를 관계형 데이터베이스 테이블로 매핑할 때 사용되는 어노테이션이다

    • 해당 어노테이션만 사용하는 경우 어노테이션이 적용된 클래스의 이름이 테이블 이름이 된다

      • @Table 어노테이션을 사용해 테이블 이름을 명시할 수 있다

    • 기본 생성자 필수

    @Table

    • 스키마를 지정하거나 테이블 이름을 명시할 수 있다

    • 옵션

      • name : 매핑 테이블 이름 지정(기본값 : 클래스명)

      • catalog : DB catalog 매핑 (기능 있는 경우)

      • schema : DB schema 매핑 (기능 있는 경우)

      • uniqueContraints : DDL 생성 시 unique 제약 조건 생성


    기본키(PK) 매핑

    @Id

    • 기본키(PK) 지정한다

    @GeneratedValue

    • 기본키(PK) 값을 자동 생성하기 위한 어노테이션

    • 여러 옵션을 통해 기본키 생성 전략 적용할 수 있다

      • identity : 기본키 생성 처리를 데이터베이스에 위임

      • sequence : 시퀀스를 이용한 기본키 생성

      • table : 별도의 기본키 테이블을 이용해 기본키 생성

      • auto : 데이터베이스에 따라 기본키 전략 선택

    identity

    • 새로운 데이터가 생성될 때 PK 값이 부여된다

      • -> 영속 객체로 올리는 시점 (persist())에 insert가 진행되고 생성된 Id를 반환 받아 1차 캐시에서 관리되는 영속 객체의 Id값으로 저장된다

    sequence

    • 데이터베이스의 Sequence 객체를 이용해 기본키를 생성하는 방식이다

    • 시퀀스를 생성할 경우 @SequenceGenerator 옵션 필요하며 이미 데이터베이스에 존재하는 시퀀스를 이용할 경우 id 필드 위에 선언

    • 새로운 데이터가 생성될 때 시퀀스 값을 조회한 뒤 해당 값을 Id로 지정하여 데이터가 저장된다

      • -> 영속 객체로 올리는 시점 (persist())에는 시퀀스 조회 쿼리가 발생하고 insert는 commit 시점에 발생한다

    • allocationSize 옵션을 통해 시퀀스 값을 가져와 캐싱할 수 있다







    - 컬렉션 아티클