JPA 관련 프로젝트를 하던 중, 이런 에러를 만났다.
기본 생성자가 엔티티에 존재하지 않다는 내용이다.
구글링하여 찾아보니, DB와 엔티티가 매핑되려면 기본 생성자를 만들어줘야 한다는 것이다.
'왜 기본생성자를 만들어 줘야할까?' 하는 궁금증이 생겼다.
DB에 존재하는 데이터를 엔티티에 매핑하는 과정은 JPA에서 빈번하다.
JPA는 DB 데이터를 객체 필드에 주입할 때 기본 생성자로 객체를 만들고 Reflection API를 통해 값을 매핑하게 된다.
🔘 Reflection API?
정확한 클래스 타입을 알지 못해도 그 클래스의 정보들(타입, 필드, 메서드 등)에 접근할 수 있게 해주는 API이다.
그러나 Reflection API는 생성자의 매개변수 정보를 알 수 없다.
그렇기 때문에 기본 생성자를 만들어줘야 Reflection API가 객체를 생성할 수 있고, 생성된 객체로 필드 값을 매핑할 수 있다.