[jpa Series] 01.annotations
December 2, 2024
Annotations
@Entity : 테이블과 매핑한다고 JPA에 알린다.
@Table : 매핑할 테이블 정보를 알려준다.
- name: 매핑할 테이블 이름 지정
- schema: 테이블이 위치한 스키마 지정
- catalog: 테이블이 위치한 카탈로그 지정
- uniqueConstraints: 테이블 유니크 제약 조건 정의
- indexes: 테이블에 인덱스를 추가
@Id : PK에 해당한다.
@GeneratedValue
- strategy: 기본 키 생성 전략을 지정한다. (AUTO, IDENTITY, SEQUENCE, TABLE)
- generator: 생성 전략의 이름을 지정
@Column : 필드 컬럼을 매핑한다.
- name: 컬럼 이름을 지정
- nullable: 컬럼이 null 값을 허용할지 여부를 지정한다.
- unique: 컬럼이 유니크 제약 조건을 가질지 여부를 지정한다.
- insertable: 컬럼이 INSERT 쿼리에 포함될지 여부를 지정한다.
- updatable: 컬럼이 UPDATE 쿼리에 포함될지 여부를 지정한다.
- length: 문자열 컬럼의 길이를 지정
- precision: 숫자 컬럼의 정밀도를 지정
- scale: 숫자 컬럼의 소수 자릿수를 지정
@Temporal: 날짜/ 시간 타입 필드에 대해 날짜, 시간의 정확도를 지정한다.
- value: DATE, TIME, TIMESTAMP를 지정
@LOB: BLOB, CLOB 타입의 필드를 매핑한다.
@Transient: 이 필드는 데이터베이스에 매핑되지 않음을 나타낸다.
@OneToOne: 일대일 관계를 정의한다.
- cascade: 연쇄 작업을 지정한다.
- fetch: 연관된 엔티티를 로드할 시점을 지정한다. (LAZY, EAGER)
- mappedBy: 양방향 관계에서 주 테이블을 지정한다.
@OneToMany: 일대다 관계를 정의한다.
- cascade: 연쇄 작업을 지정한다.
- fetch: 연관된 엔티티를 로드할 시점을 지정한다. (LAZY, EAGER)
- mappedBy: 양방향 관계에서 주 테이블을 지정한다.
@ManyToOne: 다대일 관계를 정의한다.
- cascade: 연쇄 작업을 지정한다.
- fetch: 연관된 엔티티를 로드할 시점을 지정한다. (LAZY, EAGER)
@ManyToMany: 다대다 관계를 정의한다.
- cascade: 연쇄 작업을 지정한다.
- fetch: 연관된 엔티티를 로드할 시점을 지정한다. (LAZY, EAGER)
- mappedBy: 양방향 관계에서 주 테이블을 지정한다.
@JoinColumn: 외래 키를 매핑할 컬럼을 지정한다.
- name: 외래 키 컬럼 이름을 지정한다.
- referencedColumnName: 참조된 컬럼 이름을 지정한다.
- nullable: 외래 키가 null을 허용하는지 여부를 지정한다.
- unique: 외래 키 컬럼이 유니크 제약 조건을 가지는지 여부를 지정한다.
@JoinTable: 다대다 관계에서 중간 테이블을 정의한다.
- name: 중간 테이블의 이름을 지정한다.
- joinColumns: 외래 키를 포함하는 컬럼을 지정한다.
- inverseJoinColumns: 다른 엔티티의 외래 키 컬럼을 지정한다.
@Version: 낙관적 잠금을 구현할 때 사용하는 버전 필드를 지정한다.
@Embeddable: 해당 클래스가 다른 엔티티에 내장될 수 있음을 나타낸다.
@Embedded: @Embeddable 클래스를 엔티티에 내장한다.
@ElementCollection: 엔티티 내에서 기본 값 유형의 컬렉션을 매핑한다.
- fetch: 연관된 엔티티를 로드할 시점을 지정한다.(LAZY, EAGER)
- targetClass: 컬렉션의 요소 클래스
@Enumerated: Enum 타입의 필드를 DB에 저장할 때 어떻게 저장할지 지정하는 어노테이션이다.
- EnumType.ORDINAL: 순서
- EnumType.STRING: 이름으로 저장한다.
@Converter: JPA에서 사용자 정의 타입 변환기를 정의할 때 사용하는 어노테이션이다.
@Access: JPA가 엔티티에 접근하는 방식을 지정
@JoinTable: N:M 관계의 테이블 구조와 관계를 상세히 정의할 수 있다.
- name: 중간 테이블 이름
- joinColumns: 중간 테이블에 대응되는 컬럼을 지정한다.
- inverseJoinColumns: 반대쪽 엔티티에서 중간 테이블에 대응되는 컬럼을 지정한다.
- uniqueConstraint: 중간 테이블에 대한 유니크 제약 조건을 설정한다.
- schema: 테이블이 속한 스키마를 지정한다.
- catalog: DB 카탈로그를 지정한다.