[Spring] 엔티티 관련 어노테이션

WOOK JONG KIM·2022년 10월 26일
0
post-thumbnail

@Entity

해당 클래스가 엔티티임을 명시하는 어노테이션

클래스 자체는 테이블과 일대일로 매칭되며, 해당 클래스의 인스턴스는 매핑되는 테이블에서 하나의 레코드를 의미

@Table

엔티티 클래스는 테이블과 매칭되므로 특별한 경우가 아니라면 @Table 어노테이션 필요 X

사용하는 경우 : 클래스의 이름과, 테이블의 이름을 다르게 지정해야 하는 경우

즉 명시하지 않으면 테이블의 이름과, 클래스 이름이 같다는 뜻

다르다면 @Table(name = 값) 형태로 테이블명 명시

@Id

엔티티 클래스의 필드는 테이블의 칼럼과 매칭되는데 @Id 어노테이션이 선언된 필드는 테이블의 기본값 역할을 한다

모든 Entity는 @Id 어노테이션 필요

@GenereatedValue

일반적으로 Id 어노테이션과 함께 사용

해당 필드의 값을 어떤 방식으로 자동으로 생성할 지 결정할 때 사용

값 생성 방식

  1. GenerateValue를 사용하지 않는 방식(직접할당):
    애플리케이션에서 자체적으로 고유 기본값 생성 시 사용, 내부 규칙에 의해 기본값을 생성하고 식별자로 사용

  2. AUTO : @GeneratedValue의 기본 설정 값, 기본값을 사용하는 DB에 맞게 자동 생성

  3. IDENTITY : 기본 값 생성을 DB에 위임, DB의 AUTO_INCREMENT 사용

  4. SEQUENCE :
    @SequenceGenerator 어노테이션으로 식별자 생성기 설정, 이를 통해 값 주입 받음
    생성기 정의시 name, sequenceName,allocationSize 활용
    @GeneratedValue에 생성기 설정

  5. TABLE :
    어떤 DBMS를 사용하더라도 동일하게 동작하기를 원할 경우
    식별자로 사용할 숫자의 보관 테이블을 별도로 생성해서 엔티티 생성 시 마다 값을 갱신하며 사용
    @TableGenerator 로 테이블 정보 설정

@Column

엔티티 클래스의 필드는 자동으로 테이블 칼럼으로 매칭 됨, 별다른 설정을 하지 않을거면 명시 필요 X

필드에 몇가지 설정을 더할 경우 사용

name : DB의 칼럼명을 설정하는 속성, 명시하지 않으면 필드명으로 설정

nullable : 레코드를 생성할 때 칼럼 값에 null처리가 가능한지 명시하는 속성

length : DB에 저장되는 데이터의 최대 길이 명시

unique : 해당 칼럼을 unique로 설정

@Transient

엔티티 클래스에는 선언돼 있는 필드지만 DB에서는 필요 없을 경우 이 어노테이션을 사용해 DB에서 이용하지 않게 할 수 있음

profile
Journey for Backend Developer

0개의 댓글