spring annotation 정리3 @Entity

2023. 1. 8. 04:11spring

안녕하세요. spring으로 프로젝트를 진행하면서 백엔드 개발자를 준비하고 있는 학생입니다. 공부를 하면서 어노테이션의 역할을 잘 모르고 사용하는 경우가 많아서 제가 이해가 편하도록 정리를 해보려고 합니다. 글을 읽고 나서 잘못된 점이나 부족한 점 댓글로 알려주시면 감사하겠습니다.

 

@Entity

클래스 위에 선언하여 JPA에서 정의된 필드들을 바탕으로 데이터베이스에 테이블을 만들어준다.

 

@Builder

해당 클래스에 해당하는 엔티티 객체를 만들 때 빌더 패턴을 이용할 수 있도록 해준다.

 

@AllArgsConstructor선언된 모든 필드를 파라미터로 갖는 생성자를 자동으로 만들어준다.

 

@NoArgsConstructor

기본생성자를 자동으로 만들어준다.

 

@Getter

각 필드값을 조회할 수 있는 getter를 자동으로 생성해준다.

 

@Id

해당 엔티티의 pk를 지정해준다.

 

@GeneratedValue

pk를 생성해주는 전략을 명시하는데 사용한다.

 

@GeneratedValue의 옵션

1. Auto

특정 db에 맞게 자동으로 선택하는 옵션

IDENTITY, SEQUENCE, TABLE 방법 중 하나를 자동으로 선택한다.

 

2. IDENTITY

entity를 등록할 때 db에서 AUTO_INCREAMENT를 하여 PK를 생성 후 insert 한다.

ex) mysql

 

사용방법

@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
public class Items {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private Integer price;

    private String description;

    private Integer quantity;
    
}