Develope/DataBase

[JPA] 엔티티 매핑

고로이 2021. 8. 17. 23:50
반응형
  • 객체와 테이블 매핑 : @Entity, @Table
  • 데이터베이스 스키마 자동 생성 : @Column
  • 필드와 컬럼 매핑 : @Id
  • 기본 키 매핑 : @ManyToOne, @JoinColumn

 

객테와 테이블 매핑 : @Entity, @Table

  • 기본 생성자 필수(public/protected)
  • final, enum, interface, innerclass 사용 불가
  • 저장 필드에도 final 사용 불가
  • 속성
    • @Entity(name = entityName) : 매핑할 엔티티 이름 
    • @Table(name = tableName) : 매핑할 테이블 이름

 

데이터베이스 스키마 자동 생성 : @Column

  • DDL을 애플리케이션 실행 시점에 자동 생성
  • 객체 중심
  • DDL 생성 기능은 자동 생성 시에만 사용되고 실행 로직과는 무관하다
  • DDL은 개발 장비에서만 사용, 운영에서는 후처리 하거나 사용X 
  • 속성 (hibernate.hbm2ddl.auto, value=)
    • create: App실행 시점에 drop후 create함
    • update : alter table 
    • validate : 엔티티와 테이블 매핑 확인
    • none : 사용 안함
  • 제약조건 추가 가능 
    • ex) @Column(nullable= false, length=10, uniqueConstraints = {@uniqueConstraints(name= “", columnName={“col1”, “col2"})})

 

필드와 컬럼 매핑

  • @Enumerated : enum타입 매핑. Ordinal(enum순서) 사용 금지
  • @temporal : Date, Calendar 매핑 시 사용(LocalDate, LocalDateTime은 지원이 되어서 생략 가능)
  • @Lob : CLOB(문자), BLOB(그외)
  • @transient : 필드 매핑 없음. DB 저장, 조회 등을 하지 않음 

 

기본 키 매핑 : @ManyToOne, @JoinColumn

  • @Id : 직접 할당
  • @GeneratedValue (strategy = )  
    • IDENTITY : DB값
    • SEQUENCE : db의 시퀀스 오브젝트 사용
    • TABLE 
    • AUTO
  • @TableGenerator : 자동생성
    • name
    • table 
    • pkColumnName : 시퀀스 컬럼명(seq_name)
    • valueColumnNa : 시퀀스 값 컬럼명 (기본값 : next_val)
    • pkColumnValue
    • initialValue
    • allocationSize
    • catalog, schema
    • uniqueConstraint(DDL)

 

반응형