객체와 테이블 매핑#
@Entity#
@Entity가 붙은 클래스는 JPA가 관리주의 : 기본생성자(public | protected) 필요
@Table#
엔티티와 매핑할 테이블 지정
속성
name: 테이블명catalog: DB 카탈로그schema: 스키마unique
스키마 자동 생성#
JPA에서는, 로딩 시점에 DDL 자동 생성 지원
운영에서 쓸때 조심옵션
create: 시작할때 다시만들기create-drop: 종료시 dropupdate: 변경분만 반영 `ALTER TABLEvalidate: 정상 매핑인지 확인 => 없으면persistenceException
항상 주의해서 사용할것 !! => 운영에선 validate,none 만 사용하자
필드와 컬럼 매핑#
@Column: 컬럼
@Temporal: 날짜타입@Enumerated: enum@Lob: BLOB,CLOB@Transient매핑 ❌
@Column#
name: 컬럼이름(default:필드이름)insertable/updatable: 업데이트 가능 여부nullable(DDL): notnullunique(DDL): unique (컬럼에선 잘안쓰고 @Table에서 씀)columnDefinition(DDL): 컬럼정보를 직접 줌length(DDL): 길이 (varchar)precision,scale(DDL): 정밀한 소수?
@Enumerated#
무조건
EnumType.String사용할것
@TemporalType#
시간관련 1.8부터 필요없음
- LocalDate : Date타입
- LocalDateTime : timestamp
@Lob#
문자 => Clob 나머지 => Blob
Transient#
필드 매핑 ❌ , DB 저장, 조회❌ 메모리상에서만 임시로 사용하고플때