@Entity가 붙은 클래스는 JPA가 관리한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity는 필수!!
기본값은 클래스 이름을 그대로 사용(예: Member)한다. 같은 클래스 이름이 없으면 가급적 기본값을 사용한다.
주의점
- final 클래스, enum, inteface, inner 클래스 사용 X
- 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)
- 저장할 필드에 final 사용 X
unique란? : 중복을 허용하지 않는 유일한 값을 갖는 제약조건
unique + Not null ==> PK
자바 enum 타입을 매핑할 때 사용
- ORIGINAL 타입을 쓰는 순간 순번이 뒤죽박죽 될 수 있기에 무조건 STRING을 써야한다.
날짜 타입(java.util.Date, java.util.Calendar)을 매핑할 때 사용
- LocalDate, LocalDateTime을 사용할 때는 생략 가능(최신 하이버네이트 지원)
데이터베이스 BLOB, CLOB 타입과 매핑
- @Lob에는 지정할 수 있는 속성이 없다.
(LOB은 TEXT, 그래픽, 이미지, 비디오, 사운드 등 구조화되지 않은 대형 데이터를 저장 목적)- 매핑하는 필드 타입이 문자면 CLOB 매핑, 나머지는 BLOB 매핑
- CLOB: String, char[], java.sql.CLOB (문자 기반 데이터 보관용)
- BLOB: byte[], java.sql.BLOB (ex: (Binary), 이미지, 동영상, MP3 )
- 필드 매핑X
- 데이터베이스에 저장X, 조회X
- 주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용
@Transient private Integer temp;