인프런 커뮤니티 질문&답변

김만재님의 프로필 이미지

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

스프링 MVC2 입력폼처리

23.08.02 00:48 작성

·

269

0

인프런mvc2질문.PNG

안녕하세요 MVC-2 강의중 2. 타임리프 - 스프링 통합과 폼

강의자료 3~4페이지 중에서 질문이 있습니다.

첨부한 사진을 코드를 살펴보시면, 클라이언트가 /add 페이지를 요청할 때마다 new Item()을 생성하게 됩니다.

물론 new를 하는 이유는 타임리프가 제공하는 편리한 기능인 커맨드 객체를 사용하기 위함이라고 말씀하셨습니다.

제가 궁금한 부분은, 실제 서비스에서 클라이언트는 단지 get을 할 뿐인데 이처럼 매번 객체를 생성하면 서버의 메모리가 낭비되지 않을까라는 생각이 들어서 질문을 남깁니다.

실무에서 이같은 코드를 실제로 사용하는지 궁금합니다.

아니라면, 실무에서 적용가능한 개선점도 말씀해주시면 감사하겠습니다.

 

답변 1

0

y2gcoder님의 프로필 이미지

2023. 08. 02. 11:02

안녕하세요. 김만재님, 공식 서포터즈 y2gcoder입니다.

객체 인스턴스 생성에 드는 메모리 비용이 타임리프에서 해당 객체를 사용하는데서 오는 이점에 비해 미미하기 때문에 보통 해당 형태로도 많이 사용하는 것 같습니다. 다만, 실무에서는 보통 폼 객체의 책임과 도메인 객체의 책임을 분리해주기 위해 따로 폼 전송 객체를 구현해서 많이 사용하는 것 같습니다. 저는 폼을 위한 객체 인스턴스 생성으로 인해 메모리가 위험하다는 사례는 들어보지 못한 것 같습니다.

Item 객체를 생성하는데 다른 객체도 필요하게 되고 DB 접근이 필요하게 되는 등 비용이 많이 들어가게 된다면 실무에서는 form 데이터 전용 객체로 따로 분리하는 방식으로 진행하는 것 같습니다 :)

감사합니다.