JPA annotation 정리

이호영·2022년 8월 6일
0

Spring

목록 보기
17/18

1.@Entity

  • 해당 클래스를 테이블과 매핑한다고 JPA에게 알려줍니다.
  • @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

  • 해당 어노테이션이 명시되면 INSERT 쿼리가 발생할 때, 현재 시간을 자동으로 만들어 저장합니다.

15.@UpdateTimestamp

  • 해당 어노테이션이 명시되면 UPDATE 쿼리가 발생할 때, 현재 시간을 자동으로 ㅁ나들어 저장합니다.

0개의 댓글