미소를뿌리는감자의 코딩

[Spring] @NoArgsConstructor - entity w. 기본 생성자 본문

강의수강/[Spring]

[Spring] @NoArgsConstructor - entity w. 기본 생성자

미뿌감 2024. 3. 4. 16:05
728x90

@NoArgsConstructor

 

명시적으로 생성자를 선언하지 않으면 기본 생성자를 자동으로 추가한다.
하지만 하나 이상의 생성자를 명시적으로 선언한 경우 기본 생성자는 자동으로 생성되지 않음. 이때, 해당 annotation 사용 -> 기본 생성자 명시적으로 생성해준다.

 

+ JPA를 사용할 때, entity class는 기본 생성자를 가져야 함.

*JPA: ORM의 일종으로 DB를 객체 지향적으로 사용할 수 있게 해줌.

*entity class: DB의 table에 해당하는 data. table의 column에 해당하는 데이터들을 가지고 있음.

 

JPA의 entity가 기본 생성자를 가져야 하는 이유:

이에 대해 알아보기 위해 우선 Reflection에 대해서 먼저 이해해 보자.

Reflection: 프로그램이 실행 중에 자신의 구조를 분석하고 조작할 수 있는 자바 API

                    런타임에 클래스의 메서트, 필드, 생성자 등의 정보를 조회하거나 수정할 수 있다.

 

JPA 구현체는 reflection을 사용하여 entity class의 instance(DB table의 row 행에 해당)를 생성하는데,
이 과정에서 기본 생성자가 필요.

즉, @NoArgsConstructor가 필요.

 

table의 각각의 row를 기본생성자를 이용해서 만들기 때문에, 

table의 내용을 담고 있는 entity에 기본생성자 선언이 필요.

 

728x90