[SpringBoot 구조] Entity 설명 및 정의 / 어노테이션

2023. 12. 22. 17:37SpringBoot+JPA

반응형

 

 

더보기

[목차]

 

- Entity 정의

- Entity 구조

- Entity에 사용되는 어노테이션 종류

 

 

Entity 정의

자바 어플리케이션에서 관계형 데이터베이스의 데이터를 객체로 표현하는 데 사용

엔터티 객체를 통해 데이터를 조작하고 관리 가능

주로 기본 키를 가짐. 기본 키는 데이터베이스 테이블의 기본 키와 매핑

데이터베이스의 특정 테이블과 매핑

 

 

 

Entity 구조 및 작성 방법

@Id 어노테이션을 사용하여 기본 키를 지정

@GeneratedValue 어노테이션을 사용하여 기본 키의 값을 자동으로 생성 지정

@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Table(name = "product")
@SequenceGenerator(
    name = "product_SEQ",
    sequenceName = "product_SEQ",
    initialValue = 1,
    allocationSize = 1
)
public class ProductEntity extends BaseEntity {

  //기본키
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "product_SEQ")
  private Integer productId;
  
  }

 

👉 개발자가 테이블을 생성해서 운영하고 싶은 경우,

Application에 DDL을 none로 설정, 수동으로 테이블 생성

 

 

Entity 사용 어노테이션

@Entity 해당 클래스가 JPA 엔터티임을 나타냄

관계형 데이터베이스의 테이블을 나타내는 데 사용

엔터티의 각 인스턴스는 테이블의 한 행을 나타냄
@Getter 롬복(Lombok) 라이브러리의 일부

클래스의 모든 필드에 대한 getter 메서드를 자동으로 생성

지루한 코드를 줄이는 데 도움
@Setter 롬복 라이브러리에서 제공되며 클래스의 모든 필드에 대한 setter 메서드를 생성
@AllArgsConstructor 롬복 어노테이션

클래스의 모든 필드에 대한 매개변수를 사용하는 생성자를 자동으로 생성

주로 모든 필드가 초기화된 객체를 생성하는 데 사용
@NoArgsConstructor 롬복 어노테이션은 매개변수가 없는 생성자를 자동으로 생성


@Builder 롬복에서 제공

클래스에 대한 빌더 패턴을 생성
@Table(name = "테이블명") 어노티된 엔터티에 매핑되는 데이터베이스 테이블의 세부 정보를 지정하는 데 사용

테이블의 이름을 설정
@SequenceGenerator 데이터베이스 시퀀스를 기반으로 한 기본 키 생성 전략을 정의

주로 @GeneratedValue 어노테이션과 함께 사용되어 기본 키의 생성 전략을 지정하는 데에 활용

 

@ToString  사용 금지

로깅이나 디버깅 목적으로 필요한 경우에는 필요한 정보만을 노출하도록 제한

Lazy Loading 문제 지연 로딩(Lazy Loading) 설정이 되어 있던 엔터티의 연관된 엔터티들이 강제적으로 로딩되어 성능 이슈가 발생
무한 루프 두 개의 엔터티가 서로를 참조하고 있을 때 toString()을 호출하면 상호참조로 인해 무한 루프에 빠질 수 있음
보안 문제 객체의 내부 상태를 노출
문자열로 표현 엔터티의 필드들이나 연관된 엔터티들의 데이터를 노출

 

 

 

@id 테이블의 기본키를 지정
@GeneratedValue 기본키의 생성 전략
@Column 변수와 매핑할 필드명
@Enumerated 열거형 타입 적용
@Transient 필드와 매핑에서 제외
@CreationTimestamp 삽입시 시간 자동 저장
@UpdateTimestamp 수정시 시간 자동 저장
@CreateDate 엔티티 생성시 시간 자동 저장
@LastModifiedData 엔티티값 변경시 시간 자동 저장
@Temporal 날짜 타임 매핑

 

 

 

@GeneratedValue의 생성 전략

GenerationType.AUTO JPA는 데이터베이스에 맞는 적절한 기본 키 생성 전략을 자동으로 선택
GenerationType.IDENTITY 기본키 생성을 데이터베이스에 위임

엔티티가 데이터베이스에 저장될 때,
데이터베이스는 자동으로 다음 사용 가능한 기본 키 값을 할당
GenerationType.SEQUENCE auto_increment와 동일(자동증가)

일반적으로 숫자 시퀀스를 만들고 번호를 할당하는 데 사용

 

 

 

@Column 어노테이션 속성

name     필드명
unique   제약조건
insertable   삽입가능
updateable   수정가능
length       필드의 길이(생략시 255바이트)
nullable     null값 허용
columnDefinition   직접 기술
반응형