entity 클래스를 선언할때 습관적으로 @NoArgsConstructor 어노테이션을 명시한다. 이유는 해당 클래스가 Lazy loading에 의해 프록시 객체가 될 필요가 있는 경우, Java Reflection API를 사용해서 객체를 생성해야 하기 때문이다. 그런데 Java Reflection API는 생성자의 인자를 받아와서 객체를 생성할 수 없기 때문에 기본 생성자가 필요하게 된다. 또한 일반적으로 기본 생성자의 접근 제어자를 protected로 놓는 경우가 있는데 이는 개발자 본인, 또는 다른 개발자가 해당 엔티티의 스펙에 맞지 않게 객체를 생성할 우려가 있기 때문이 이를 방지하기 위해서다.