DTO를 서비스에서 만들어라

coding S's avatar
Mar 24, 2024
DTO를 서비스에서 만들어라

1. 커넥션의 시간이 길어진다.

내 서버의 가용량이 줄어든다 (커넥션이 종료될 때까지 많은 사람들이 한번에 같이 쓰지 못한다)
 

2. 필요 없는 필드를 응답하게 된다.

 

3. 타이밍의 문제

MessageConverter에서 json을 만들 때 Bean 객체를 Lazy Loading 하고 기다렸다가 json을 만들어야 하는데, 안 기다리고 만들다가 오류가 난다! -> 타이밍의 문제 RestController 에서는 return될 때 그냥 String 이면 그 메세지를 그대로 응답하고, return되는게 오브젝트면 JSON을 컨버터하는 메세지 컨버터가 발동 (내부적으로 그렇게 되어있음) 메세지 컨버터가 레이지 로딩하려면 무조건!! GETTER 메서드 호출이 필요! JSON으로 변환되는 과정에서 실제로 로드되려면, 해당 속성에 접근하는 getter 메서드 호출이 필요! 레이지 로딩이 되는 것보다 제이슨을 더 빨리 만들어서 문제가 발생하는 것임!!
 

[ 해결법 ]

1. open in view : false -> 커넥션의 시간이 줄어든다. (커넥션의 시간이 줄어들면 메세지 컨버터에 레이지 로딩을 못 맡김!) 2. 서비스 종료 직전에 레이지 로딩 발동시키기 3. 서비스에서 dto를 만들어야 함!
💡
해결법을 아는게 아니라 왜 이렇게 되는지, 왜 이런 해결법이 나와야 하는지 이런 걸 아는게 중요하다!
Share article

codingb