도메인, VO 객체 Serializable 직렬화 :: 개발/일상_Mr.lee

도메인, VO 객체 Serializable 직렬화

Posted by Mr.mandu.
2017. 6. 13. 11:24 개발/java,spring

프로젝트를 진행하다보면

도메인 혹은 VO객체에 

implements Serializable를 하는 경우가 많다.


갑자기 이 행위를 왜 하는지 궁금해 졌다.


다른 네트웍 통신을 하지 않는데 사용하길래 더욱더 궁금해 졌다.

그래서 간략하게 정리하게 됬었다.


직렬화란?

JVM 힙영역에 존재하는 객체를 한 줄로 늘어선 바이트의 형태로 만드는 것!!


역직렬화란?

객체의 형태로 복원하는 작업!



java.io.Serializabe 인터페이스를 보면 구현해야 하는 메소드가 없다. 

그 이유는 Serializable 인터페이스를 구현한 구현체가 직렬화 대상이다라는 것을 JVM에게 알려주는 역할만을 하기 때문이다.


결론은....

속도와도 전혀 상관 없고

해당 객체를 파일 또는 서블릿세션에 저장하거나 소켓/RMI로 보내야할때 구현해야 한다는 것!

다른 VO나 도메인에 implements Serializable 가 있다면 습관적 혹은 관례로 붙이지 않았나...생각이 듭니다.


추가로 

직렬화시, serialVersionUID를 사용하는데

serialVersionUID를 이용하여 객체가 동일객체인지, 동일상태인지 확인하는데 사용합니다.