nested exception is org.hibernate.InstantiationException: No default constructor for entity
이런 에러를 만나고 궁금증이 들었다
왜 Entity는 기본 생성자가 필요할까?
JPA는 자바에서 제공하는 reflection API를 활용해 동적으로 객체를 생성한다. JVM이 실행되면 코드가 static 영역에 저장되는데 reflection API는 그 정보를 활용해 구체적인 클래스 타입을 몰라도 클래스 이름을 통해 static 영역에서 그 클래스의 정보에 접근할 수 있게 해준다. 하지만 생성자의 인자정보는 가져올 수 없기때문에 기본생성자가 있어야 객체를 생성할 수 있다.
@Builder로 빌드클래스를 만드는데 이 과정에서 기본 생성자 대신 모든 필드값을 가지는 생성자만 생성한다. 따라서 Entity 클래스 위에 @AllArgsConstructor 와 @NoArgsConstructor 를 붙여 생성자를 만들어주면 된다!
'Today I Run' 카테고리의 다른 글
[Springboot] @Transcational @Modifying (0) | 2024.05.09 |
---|---|
[React] Portals, ref (0) | 2024.05.09 |
Websocket 맛보기 (1) | 2024.05.09 |
[GoogleStudyJam] Introduction to Image Generation (0) | 2024.05.09 |
[GoogleStudyJam] Prompt Design in Vertex AI 실습 (1) | 2024.05.09 |