Skip to content

Conversation

@lamodadite
Copy link

드디어 끝인가요!!!!! 빨리 빨리 했어야 하는데 죄송함다..

Dto에 기본생성자만 있어도 역직렬화를 통한 객체 생성이 가능한 이유?

  • @RequestBody를 쓰면 Jackson 라이브러리가 Json데이터를 역직렬화 해서 객체가 생성된다.
  • 그러니 해당 객체에는 @Setter 혹은 @AllArgumentsConstructor가 필요할 줄 알았지만 없어도 문제없이 동작한다. 아니 어떻게 ??!!
  • 이유는 Jackson 이 @Setter가 없으면 리플렉션을 사용해 필드에 직접 값에 접근할 수 있기 때문이다.
  • Jackson은 spring-boot-starter-web 의존성에 포함되어 있다.

Jpa를 사용할때 Entity에 기본생성자가 있어야 하는 이유?

  • Jpa는 DB에서 조회한 객체를 생성할때 리플렉션을 사용한다.
  • 객체를 생성할 때 최소한 기본 생성자를 호출할 수 있어야 한다.
  • 그렇다고 기본 생성자를 public으로 열 필요는 없다. protected로 해도 가능하다.
  • LazyLoading을 구현할때도 프록시 객체에 리플렉션이 사용된다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants