Spring Boot Entity

wjd15sheep·2024년 4월 13일
0

Spring Boot

목록 보기
4/19

엔티티

스프링 부트 JPA에서 엔티티는 데이터베이싀의 테이블에 대응하는 클래스

엔티티에는 데이터베이스에 쓰일 테이블과 칼럼을 정의

엔티티에 어노테이션을 사용하면 테이블 간의 연관관계를 정의

Likes의 엔티티 예시

@Entity

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

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

@Table

엔티티 클래스는 테이블과 매핑되므로 특별한 경우가 아니면 @Table 어노테이션이 필요하지 않다.

@Table 어노테이션을 사용할 때는 클래스의 이름과 테이블의 이름을 다르게 지정해야 하는 경우

⇒ @Table(name = 값) 형태로 테이블 명을 명시함

@Id

엔티티 클래스의 필드는 테이블의 칼럼과 매핑됩니다.

선언된 필드는 테이블의 기본값 역할로 사용된다.

모든 엔티티는 @Id 어노테이션이 필요하다

@GeneratedValue

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

해당 필드의 값을 어떤 방식으로 자동으로 생성할지 결정할 때 사용한다. 값 생성 방식은 다음과 같다

GeneratedValue를 사용하지 않는 방식(직접 할당)

  • 고유한 기본값을 생성할 경우 사용하는 방식
  • 내부에 정해진 규칙에 의해 기본값ㅇ르 생성하고 식별자로 사용

ATUO

  • @GeneratedValue의 기본 설정값
  • 기본값을 사용하는 데이터베이스에 맞게 자동 생성

IDENTITY

  • 기본값 생성을 데이터베이스에 위임하는 방식
  • 데이터베이스의 AUTO_INCREMENT를 사용해 기본값을 생성

SEQUENCE

  • @SequenceGenerator 어노테이션으로 식별자 생성기를 설정하고 이를 통해 값을 자동 주입받습니다.
  • SequenceGenerator를 정의할 때는 name, sequenceName, allocationSize를 활용
  • @GenerateValue에 생성기를 설정

TABLE

  • 어떤 DBMS를 사용하더라도 동일하게 동작하기를 원할 경우 사용
  • 식별자로 사용할 숫자의 보관 테이블을 별도로 생성해서 엔티티를 생성할 때마다 값ㅇ르 갱신하며 사용
  • @TableGenerator 어노테이셪으로 테이블 정보를 설정

@Column

엔티티 클래스의 필드는 자동으로 테이블 칼럼으로 매핑

요소

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

@Transient

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

profile
성장 위해 노력하는 웹 개발자 주니어

0개의 댓글