인프런 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (https://www.inflearn.com/course/ORM-JPA-Basic/dashboard) 을 들으며 정리하였습니다.
JPA를 이용해서 테이블과 매핑할 클래스에는 @Entity 어노테이션을 필수로 붙여줘야 한다. 그렇지 않으면 단순한 클래스에 불과하다. 또한 기본 생성자가 필수로 있어야하며 final 클래스, enum, interface, inner 클래스는 사용이 불가하다.
@Entity(name = "")
- name에는 JPA에서 사용할 엔티티 이름을 지정해 주는 속성이지만 대부분 기본값인 같은 클래스 이름을 가지도록 하여 사용한다.
@Table
- name : 테이블 이름을 명시해주는 속성이며 기본값으로 엔티티 이름을 사용한다.
- catalog : DB catalog 매핑
- schema : DB schema 매핑
- uniqueConstraints : DDL 생성 시에 유니크 제약조건을 생성한다.
매핑 어노테이션
- @Column : 컬럼을 매핑한다.
- @Temporal : 날짜 타입을 매핑한다. (LocalDateTime을 이용하면 명시를 안해줘도 된다.)
- @Enumerated : enum 타입을 매핑한다. 타입으로는 EnumType.STRING을 사용해야한다.
- @Lob : BLOB, CLOB를 매핑한다
- @Transient : 특정 필드를 매핑하고 싶지 않을때 사용하는 어노테이션
기본키 매핑 어노테이션
- 기본키를 설정할 때에는 Long형 + 대체키 + 키 생성전략을 사용해서 생성한다.
직접 기본키 명시
- @Id : 직접 기본키를 명시할 때 사용하는 어노테이션
자동 기본키 생성
- @GneratedValue
- SEQUENCE : 데이터베이스의 시퀀스 오브젝트를 사용한다.
- IDENTITY : 기본키 생성을 데이터베이스에게 맡긴다.
- TABLE : 기본키를 생성하는 테이블을 사용한다, 모든 DB에서 사용 @TableGenerator 어노테이션 필요
- AUTO : 각 데이터베이스에 맞게 자동으로 지정한다.