<aside> ❗

엔티티 매핑

<aside> ❗

객체와 테이블 매핑

@Entity

** 주의 **

Entity 속성 정리

[속성 : name]

<aside> ❗

@Table

[속성 : name]

image.png

// 특정 컬럼의 값이 중복되지 않도록 보장하는 제약 조건 
// 하나의 테이블 내에서 중복된 값을 허용하지 않음 
// 동일한 테이블 내에서만 적용됨
@Table(uniqueConstraints = "email" )

</aside>

<aside> ❗

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

<aside> ❗

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

image.png

// 기존 테이블 삭제 후, 다시 생성 
<property name="hibernate.hbm2ddl.auto" value="create" />

// 변경분만 반영(운영 DB에서 사용하면 안 됨)
// 추가하는 것만 반영, 지우는 건 안 됨
<property name="hibernate.hbm2ddl.auto" value="update" />

// 엔티티와 테이블이 정상 매핑되었는지만 확인 
<property name="hibernate.hbm2ddl.auto" value="validate" />

**** 주의 ****

<aside> ❗

DDL 생성 기능

<aside> ❗

필드와 컬럼 매핑

[요구사항 예시]

  1. 회원은 일반 회원과 관리자로 구분해야 한다.
  2. 회원 가입일과 수정일이 있어야 한다.
  3. 회원을 설명할 수 있는 필드가 있어야 한다. 이 필드는 길이 제한이 없다. </aside>

<aside> ❗

매핑 어노테이션 정리

image.png

<aside> ❗

@Column 속성

image.png

// 필드와 매핑할 테이블 컬럼 이름 
// 기본값 - 객체의 필드 이름 
@Column(name = "name")

// 기본값 - true 
// 해당 컬럼이 INSERT 문에 포함될지 여부 
@Column(insertable = true)
// 해당 컬럼이 UPDATE 문에 포함될지 여부 
// 삽입하고 수정되면 안 되는 경우 updatable = false로 설정 (강제로 업데이트하면 가능)
@Column(updatable = false)

// 기본값 - true
// NotNull 제약조건 (nullable = false)
@Column(nullable = false)

// 이름 반영이 어려워 잘 사용 안 함 
// 유니크 제약조건 
@Column(unique = true)

// 컬럼 정보를 직접 줄 때 사용 
@Column(columnDefinition = "varchar(100) default 'EMPTY'")

// 길이 설정 Ex) varchar(10)
@Column(length = 10); 

// BigDecimal, BigInteger에서 사용 
// precision은 소수점을 포함한 전체 자릿수
// scale은 소수의 자릿수
// double, float 타입에는 적용되지 않는다.
@Column(precision = 10, scale = 2)
private BigDecimal price;
-> 최대 10자리(소수포함), 소수점 이하 2자리 
-> 99999999.99까지 저장 가능

</aside>

<aside> ❗

@Enumerated

image.png

</aside>