엔티티 관련 기본 어노테이션

김건우·2023년 6월 29일
0

엔티티를 작성할 때는 어노테이션을 많이 사용한다.
여기서는 기본적으로 많이 사용하는 어노테이션을 소개한다.

@Entity

해당 클래스가 엔티티임을 명시하기 위한 어노테이션.
클래스 자체는 테이블과 1:1로 매칭되며, 해당 클래스의 인스턴스는 매핑되는 테이블에서 하나의 레코드를 의미한다.

@Table

엔티티 클래스는 테이블과 매핑되기에 특별한 경우가 아니면 @Table 어노테이션이 필요하지 않다.
클래스의 이름과 테이블의 이름을 다르게 지정하는 경우 사용한다.
@Table을 명시하지 않으면 클래스의 이름과 테이블의 이름이 동일하다는 의미이다.
사용법은 @Table(name="") 형태로 DB의 테이블명을 명시해야 한다.

@Id

엔티티 클래스의 필드는 테이블의 칼럼과 매핑된다.
@Id 어노테이션이 선언된 필드는 테이블의 기본값 역할로 사용된다.
모든 엔티티는 @Id 어노테이션이 필요!

@GeneratedValue

일반적으로 @Id 어노테이션과 같이 사용.
이 어노테이션은 해당 필드의 값을 어떤 방식으로 자동으로 생성할지 결정

  • GeneratedValue를 사용하지 않는 방식 (직접 할당)
    • 내부에 정해진 규칙에 의해 기본값을 생성하고 식별자로 사용
  • AUTO
    • 기본 설정값으로 DB에 맞게 자동 생성한다.
  • IDENTITY
    • DB의 AUTO_INCREMENT를 사용해 기본값 생성
  • SQUENCE
    • @SequenceGenerator 어노테이션으로 식별자 생성기를 설정, 이를 통해 값을 자동 주입 받음
    • 정의 시 name, sequenceName, allocationSize 활용
  • TABLE
    • 어떤 DBMS를 사용하던 동일하게 동작하기를 원할 경우 사용
    • 식별자로 사용할 숫자의 보관테이블을 별도로 생성해 엔티티를 생성할 때마다 값을 갱신하며 사용한다.
    • @TableGenerator 어노테이션으로 테이블 정보를 설정

@Column

엔티티의 클래스의 필드는 자동으로 테이블 칼럼으로 매핑된다.
그래서 별다른 설정이 없다면 명시하지 않아도 괜찮다.
많이 사용하는 요소로는

  • name : DB의 칼럼명을 설정 (명시하지 않으면 필드명으로 지정)
  • nullable : 레코드 생성 시 칼럼 값에 null 처리가 가능한지 명시
  • length : DB에 저장하는 데이터의 최대 길이 설정
  • unique : 해당 칼럼을 유니크로 설정

@Transient

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

profile
공부 정리용

0개의 댓글