Spring JPA 엔티티와 매핑 @Entity, @Table, @Column, @Id, @GeneratedValue

박희중·2022년 3월 7일
0

spring

목록 보기
3/4
post-thumbnail

JPA Mapping

객체와 테이블 매핑 : @Entity, @Table
필드와 컬럼 매핑 : @Column
기본 키(PK) 매핑 : @Id
연관관계 매핑 : @ManyToOne, @JoinColumn



@Entity

  • @Entity가 붙은 클래스는 JPA가 관리
  • DB의 테이블과 매핑

속성

  • name : Entity 이름을 지정. (기본값인 클래스 이름을 사용한다)

주의사항

  • 기본 생성자 필수 (JPA가 Entity 객체 생성 시 기본 생성자 사용)
  • final, enum, interface, inner class 에는 사용할 수 없음



@Table

  • Entity와 매핑할 테이블을 지정
  • 생략 시 매핑한 Entity 이름을 테이블 이름으로 사용

속성

  • name : 매핑할 테이블 이름 (default. Entity 이름 사용)
  • catalog : DB의 catalog를 매핑 (default. DB 명)
  • schema : DB 스키마와 매핑
  • uniqueConstraint : DDL 작성 시 unique 제약 조건 생성



@Column

  • 객체 필드를 DB 테이블 컬럼에 매핑
  • 속성 중 주로 name, nullable을 사용

속성

  • name : 필드와 매핑할 테이블 컬럼 이름 지정 (default. 객체의 필드 이름)
  • nullable : null 값의 허용 여부 설정, false 설정 시 not null (default. true)
  • unique : unique 제약 조건 생성
  • columnDefinition : DB 컬럼 정보를 직접 지정
  • length : varchar 길이 조정 (default. 255)
  • percision, scale : BigDecimal (or BigInteger) 타입에서 사용, percision은 소수점을 포함한 전체 자리수를, scale은 소수의 자리수를 의미



@Id

  • JPA가 Entity를 관리할 때 식별할 기본키(PK)를 지정.

기본 키 직접 할당

  • em.persist() 호출하기전 애플리케이션에서 직접 식별자 값을 할당. 식별자 값이 없을 경우 에러 발생

기본 키 자동 생성 @GeneratedValue

  • IDENTITY : 기본 키 생성을 DB에 위임 (=AUTO_INCREMENT)

  • SEQUENCE : DB 시퀀스를 사용하여 기본 키 할당

  • TABLE : 키 생성 테이블을 사용. 키 생성 전용 테이블을 하나 만들고 테이블에 이름과 값으로 사용할 컬럼을 만들어 DB 시퀀스를 흉내내는 전략. 테이블을 사용하므로 모든 DB에서 적용 가능

  • AUTO : 선택한 DB에 따라 방식을 자동으로 선택(Default)
    ex) 오라클 선택 시 SEQUENCE, Mysql 선택 시 IDENTITY 사용

profile
백엔드 엔지니어 박희중입니다.

0개의 댓글