본문 바로가기
JAVA & SPRING/JPA

JPA 기본편0 (엔티티 매핑)

by 눈오는1월 2024. 2. 20.
728x90

본 내용은 인프런 김영한 강사님 JPA 기본 편 강의를 듣고 정리한 내용입니다.

https://www.inflearn.com/course/ORM-JPA-Basic

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 - 인프런

회사땜에 매일 바쁜 와중에 학원이라도 다닐까 생각했는데 마침 JPA 강의가 생겨서 꿀 타이밍이네요. 저는 이 전에 JPA 책을 보고 공부 했었는데요 궁금했던 점, 업무에 적용하며 고민하고 해결하

www.inflearn.com

 

엔티티 매핑 종류

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

 

@Entity

<개념>

JPA를 사용해서 테이블과 매핑할 때 필수(JPA가 관리)

기본 생성자가 필수

final, enum, interface, inner 클래스 사용 불가

 

<속성>

name -> JPA에 사용할 엔티티 이름 지정 ex) @Entity(name = user)

 

 

@Table

<개념>

엔티티와 매핑할 테이블 지정

<속성>

name -> 매핑할 테이블 이름 지정

catalog -> 데이터베이스 catalog 매핑

schema -> 데이터베이스 schema 매핑

uniqueConstraints(DDL) -> DDL 생성 시 유니크 제약 조건 생성

 

<property name="hibernate.hbm2ddl.auto" value="create" />

여기 value에 들어갈 수 있는 속성이 5개가 있다

create-> 기존 테이블 삭제 후 다시 생성

create-drop -> create와 같으나 종료 시점에 DROP

update -> 변경분만 반영

Validate -> 엔티티와 테이블이 정상 매핑 되었는지만 확인

none -> 사용하지 않음

*주의*

운영 단계에서 절대 create, create-drop, update 사용 x

 

@Column

<개념>

엔티티와 매핑할 컬럼 지정

<속성>

name -> 매핑할 테이블 컬럼 이름 지정

insertable, updatable -> 기본값 True , insertable을 False로 지정할 경우 DB에 값을 넣을 수 없다. updatable을 false로 할 경우 DB값이 Update로 되지 않는다.

nullable(DDL) -> null값 허용 여부

unique(DDL) -> 유니크 제약 조건 사용

columnDefination(DDL) -> 데이터베이스 컬럼 정보 직접 제공

precision, scale(DDL) -> BigDecimal 타입 사용, precisio은 소수점을 포함한 전체 자리 scale은 소수점 자리 지정 가능

 

* DDL 생성 기능은 DDl을 자동 생성할 떄만 사용 JPA 실행 로직에 영향을 주지 않는다.

 

@Enumerated

<개념>

자바 enum 타입 매핑할때 사용

<속성>

value

-> EnumType.ORDINAL, EnumType, STRING 2개 있는데 ORDINAL은 사용X

ORDINAL을 사용하지 말라는 이유는 ORDINAL은 enum 순서를 DB에 저장하는데 enum에 값을 추가해 순서가 바뀔 겨우 문제가 생김 그래서 무조건 STRING을 써야 한다.

 

 

728x90