1.@Entity
2.@Table
@Table 어노테이션을 생략하면 클래스 이름을 테이블 이름으로 매핑합니다.
· name : 테이블 이름
· catalog : 테이블 카테고리
· schema : 테이블 스키마
· uniqueConstraints : 컬럼값 유니크 제약 조건
· indexes : 인덱스 생성
3.@Access
JPA가 엔티티 데이터에 접근하는 방식을 지정합니다.
· AccessType.FIELD : 필드에 직접 접근
· AccessType.PROPERTY : getter를 통해 접근
4.@Id
엔티티 클래스의 필드를 테이블의 기본키(PK)에 매핑합니다.
@Id가 사용된 필드를 식별자 필드라고 합니다.
주로 @GeneratedValue 라는 어노테이션과 같이 이용해서 식별키를 어떤 전략으로 생성하는지 명시합니다
5.@Column
엔티티 클래스의 필드를 컬럼에 매핑합니다.
· name : 컬럼 이름
· unique : 유니크 여부 (DDL)
· nullable : null 허용 여부 (DDL)
· insertable : 추가 가능 여부 (DDL, DML)
· updatable : 수정 가능 여부 (DDL, DML)
· table : 테이블 이름 (하나의 엔티티를 두 개 이상의 테이블에 매핑할 때 사용)
· columnDefinition : 데이터베이스 컬럼 정보 직접 부여 (DDL)
· length : 컬럼 사이즈 (default:255) (DDL)
· precision : 소수 정밀도 (default:0) (DDL)
· scale : 소수점 이하 자리수 (default:0) (DDL)
6.@GeneratedValue
데이터베이스에 의해 자동으로 생성될 값에 대한 전략을 지정합니다.
보통 식별키 생성 전략으로 많이 사용됩니다.
· strategy : 식별키 전략 지정 (default:AUTO)
AUTO : 특정 데이터베이스에 맞게 자동으로 생성되는 방식
IDENTITY : 기본키 생성 방식 자체를 데이터베이스에 위임하는 방식, 데이터베이스에 의존 방식 (MySQL, MariaDB 등 auto_increment 이용)
SEQUENCE : 데이터베이스의 시퀀스를 이용해서 식별키 생성 (Oracle, PostgreSQL 등 시퀀스 제공 데이터베이스)
TABLE : 데이터베이스 종류에 상관없이 별도의 키를 생성해 주는 채번 테이블을 이용하는 방식
· generator
@TableGenerator
@SequenceGenerator
7.@SequenceGenerator
테이블 기본키 생성 전략을 시퀀스로 이용할 경우 시퀀스에 정보를 지정합니다.
· name : 식별자 이름
· sequenceName : 데이터베이스안에 정의된 실제 시퀀스 이름
· initialValue : DDL 생성시에만 사용되며, 시퀀스 DDL 생성시 초기값
· allocationSize : 시퀀스 한 번 호출에 증가하는 수
· catalog : 데이터베이스 catalog
· schema : 데이터베이스 schema
8.@TableGenerator
테이블 기본키 생성 전략을 특정 채번 테이블을 이용할 경우 테이블에 정보를 지정합니다.
· name : 식별자 이름
· table : 키생성 테이블명
· pkColumnName : 시퀀스 컬럼명
· valueColumnName : 시퀀스 값 컬럼명
· pkColumnValue : 키로 사용할 값 이름
· initialValue : 초기 값, 마지막으로 생성된 값이 기준
· allocationSize : 시퀀스 한 번 호출에 증가하는 수
· catalog : 데이터베이스 catalog
· schema : 데이터베이스 schema
· uniqueConstraints(DDL) : 유니크 제약 조건 지정
9.@Index
인덱스를 지정합니다.
· name : 인덱스 이름
· columnList : 인덱스를 지정할 컬럼들
· unique : 중복값 허용 여부 (default:false[중복 허용])
10.@Enumerated
자바 enum 타입을 매핑할 떄 사용합니다.
· EnumType.ORGINAL : enum 순서를 DB에 저장
· EnumType.STRING : enum 이름을 DB에 저장
11.@Temporal
날짜 타입을 매핑할 때 사용합니다.
· TemporalType.DATE : 날짜, DB date 타입과 매핑(ex: 2021-07-27)
· TemporalType.TIME : 시간, DB time 타입과 매핑(ex: 12:30:50)
· TemporalType.TIMESTAMP : 날짜와 시간 DB timestamp 타입과 매핑(ex: 2021-07-27 12:30:50)
12.@Lob
DB BLOB, CLOB 타입과 매핑
· 필드 타입이 문자열이면 CLOB 매핑
· 그 외 자료형이면 BLOB 매핑
13.@Transient
해당 어노테이션이 명시된 필드는 DB에 저장하지도 조회하지도 않습니다.
· 객체에 임시로 값을 보관하고 싶을 떄 사용합니다.
14.@CreationTimestamp
15.@UpdateTimestamp