시냅스

JPA 엔티티 매핑 정리 본문

Java, Spring/JPA

JPA 엔티티 매핑 정리

ted k 2022. 9. 16. 21:20

엔티티 매핑

  • 객체와 테이블 매핑
    • @Entity
      • JPA가 관리하는 클래스
      • 테이블과 매핑할 클래스
      • 기본 생성자(public, protected)를 필수로 생성해야 한다.
    • @Table
      • 속성
        • name
          • JPA에서 사용할 엔티티 이름을 지정한다.
          • 기본값 : 클래스의 이름을 그대로 사용한다.
          • 같은 클래스 이름이 없으면 가급적 기본값을 사용한다.
        • catalog
          • 데이터베이스 catalog 매핑
        • schema
          • 데이터베이스 schema 매핑
        • uniqueConstraints
          • DDL 생성 시에 유니크 제약 조건 생성
  • 필드와 컬럼 매핑
    • @Column
      • 컬럼 매핑
      • 속성
        • name
          • 필드와 매핑할 테이블의 컬럼 이름
        • insertable, updatable
          • 등록, 변경 가능 여부
        • nullable(DDL)
          • null 값의 허용 여부
        • unique(DDL)
          • unique 제약 조건
        • columnDefinition(DDL)
          • 컬럼 정보
        • length(DDL)
          • 문자 길이 제약 조건, String 타입만 적용 가능
        • percision, scale(DDL)
          • BigDecimal 타입에서 사용한다.
          • precision은 소수점을 포함한 전체 자릿수
          • scale은 소수의 자릿수
    • @Temporal
      • 날짜 타입 매핑
      • 속성
        • TemporalType.Date
          • 날짜, 데이터베이스 date 타입과 맵핑
          • e.g. 2013-10-11
        • TemporalType.Time
          • 시간, 데이터베이스 time 타입과 매핑
          • e.g. 11:11:11
        • TemporalType.TIMESTAMP
          • 날짜와 시간, 데이터베이스 timestamp 타입과 매핑
          • e.g. 2013-10-11 11:11:11
    • @Enumerated
      • enum 타입 매핑
      • value
        • EnumType.ORDINAL
          • 순서를 숫자로(우리가 아는 enum) 절대 사용하면 안된다.
        • EnumType.STRING
          • enum 이름을 데이터베이스에 저장
          • 무조건 이걸 사용해야 한다.
    • @Lob
      • BLOB, CLOB 매핑
      • 지정할 수 있는 속성이 없다.
      • 매핑할 필드 타입이 문자면 CLOB
      • 나머지는 BLOB
    • @Transient
      • 특정 필드를 컬럼에 매핑하지 않음(매핑 무시)
      • 데이터베이스에 저장, 조회 하지 않음
      • 주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때
  • 기본 키 매핑
    • @Id
    • @GeneratedValue
      • strategy = GenerationType.IDENTITY
        • 데이터베이스에 위임
        • MYSQL(AUTO_INCREMENT)
        • AUTO_INCREMENT는 데이터베이스 insert 문을 실행한 이후에 ID 값을 알 수 있다.
        • IDENTITY 전략은 em.persist 시점에 즉시 insert문을 실행하고 DB에서 식별자를 조회한다.
      • strategy = GenerationType.SEQUENCE
        • 데이터베이스 시퀀스 오브젝트 사용
        • ORABLE
        • @SequenceGenerator 필요
        • 속성
          • name
            • 식별자 생성기 이름
          • sequenceName
            • 데이터베이스에 등록되어 있는 시퀀스 이름
          • initialValue
            • DDL 생성 시에만 사용됨, 시퀀스 DDL을 생성할 때 처음 시작하는 수를 지정한다.
          • allocationSize
            • 시퀀스 한 번 호출에 증가하는 수
            • 데이터베이스 시퀀스 값이 하나씩 증가하도록 설정되어 있으면 이 값을 반드시 1로 설정해야 한다.
          • catalog, schema
      • strategy = GenerationType.TABLE
        • 키 생성용 테이블 사용
        • 모든 DB
        • @TableGenerator 필요
        • 속성
          • name
            • 식별자 생성기 이름
          • table
            • 키생성 테이블명
          • pkColumnName
            • 시퀀스 컬럼명
          • valueColumnName
            • 시퀀스 값 컬럼명
          • pkColumnValue
            • 키로 사용할 값 이름
          • initialvalue
            • 초기 값, 마지막으로 생성된 값이 기준이다.
          • allocationSize
            • 시퀀스 한 번 호출에 증가하는 수
          • catalog, schema
          • uniqueContrants(DDL)
      • strategy = GenerationType.AUTO
        • DB 방언에 따라 자동 지정
        • 기본값

'Java, Spring > JPA' 카테고리의 다른 글

JPA 상속관계 매핑 정리  (0) 2022.09.17
JPA 연관관계 정리  (0) 2022.09.16
JPA 영속성 컨텍스트 정리  (0) 2022.09.16
Spring Data JPA 정리  (0) 2022.09.03
Spring JPA 기본 사용법 정리  (0) 2022.09.03
Comments