엔티티 매핑

gotcha!!·2023년 9월 8일
0

JPA

목록 보기
6/16

엔티티 매핑

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

@Entity

  • @Entity가 붙은 클래스는 JPA가 관리하고 Entity라 부른다.
  • JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다.

주의사항

  • 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)
  • final 클래스, enum, interface, inner 클래스 사용 x
  • 저장할 필드이 final 사용 x

@Entity 속성

  • name : JPA에서 사용할 엔티티 이름 지정, 가급적 기본 값을 사용하자
    기본값은 클래스 이름을 그대로 사용함

@Table

@Table은 엔티티와 매핑할 테이블을 지정하는 것

  • name : 매핑할 테이블 이름 기본값은 엔티티 이름을 사용함
  • catalog : 데이터베이스 catalog 매핑
  • schema : 데이터 베이스 schema 매핑
  • uniqueConstraints(DDL) : DDL 생성 시에 유니크 제약 조건 생성

데이터베이스 스키마 자동생성

  • DDL을 애플리케이션 실행 시점에 자동 생성
  • 테이블 중심 > 객체 중심
  • 데이터베이스 방언(dialect)을 활용해서 데이터베이스에 맞는 적절한 DDL 생성
  • 운영서버에서 사용 대체로 안하고 개발 장비에서만 사용

데이터 베이스 스키마 속성

  • create : 기존 테이블 삭제 후 다시 생성 (DROP + CREATE)
  • create-drop : create와 같으나 종료 시점에 테이블이 drop됨
  • update : 변경분만 반영(운영 DB 사용금지)
  • validate : 엔티티와 테이블이 정상 매핑되었는지만 확인
  • none : 사용x

주의 사항..

데이터 베이스 장비에는 절대 create, create-drop, update를 사용하면 안된다.
개발 초기 단계는 create or update
테스트 서버는 update or validate
스테이징과 운영서버는 validate or none 사용

DDL 생성 기능

DDL 생성 기능은 DDL을 자동 생성할 때만 사용되고, JPA 실행 로직(@Entity,@Table)에는 영향을 주지 않는다.

ex)
@Column(nullable = false, length = 10)
@Table(@uniqueConstraints = {@UniqueConstraint( name = "NAME_AGE_UNIQUE", columnNames = {"NAME", "AGE"} )})
profile
ha lee :)

0개의 댓글