문득 공부하다가 의문점이 들었습니다. 파일업로드하는데 DTO에 왜
Serializable 을 구현하는 이유가 뭘까?
자바책에는 객체를 파일에 저장하거나 파일에서 꺼내오기 위해서 또는 객체를 네트워크를 통해 전송하기 위해서는 미리 객체를 직렬화해야 한다고 되어 있습니다.
웹 소스를 보면 서비스 객체나 컨트롤러 객체는 직렬화 하지 않는데, 도메인 객체(DB에서 읽어온 내용을 담는 객체)는 꼭 implement Serializable로 직렬화를 하는데 이유가 궁금했습니다.
서버가 다중화되어 있고 세션 클러스터링을 통해 세션관리를 하는 환경에서 도메인 객체가 세션에 저장이 될 때 도메인 객체에 Serializable 인터페이스를 구현해야 정상적으로 세션에 저장하고 꺼내올 수 있기 때문입니다.
도매인 객체가 세션에 저장되지 않는 단순한 데이터 집합이고 컨트롤러에서 생성되어서 뷰에서 소멸하는 데이터의 전달체라면 객체 직렬화를 고려하지 않아도 됩니다.
객체 직렬화는 Serializable인터페이스를 구현한 것만 가능하게 설계합니다.