도메인, VO 객체 Serializable 직렬화
프로젝트를 진행하다보면
도메인 혹은 VO객체에
implements Serializable를 하는 경우가 많다.
갑자기 이 행위를 왜 하는지 궁금해 졌다.
다른 네트웍 통신을 하지 않는데 사용하길래 더욱더 궁금해 졌다.
그래서 간략하게 정리하게 됬었다.
직렬화란?
JVM 힙영역에 존재하는 객체를 한 줄로 늘어선 바이트의 형태로 만드는 것!!
역직렬화란?
객체의 형태로 복원하는 작업!
java.io.Serializabe 인터페이스를 보면 구현해야 하는 메소드가 없다.
그 이유는 Serializable 인터페이스를 구현한 구현체가 직렬화 대상이다라는 것을 JVM에게 알려주는 역할만을 하기 때문이다.
결론은....
속도와도 전혀 상관 없고
해당 객체를 파일 또는 서블릿세션에 저장하거나 소켓/RMI로 보내야할때 구현해야 한다는 것!
다른 VO나 도메인에 implements Serializable 가 있다면 습관적 혹은 관례로 붙이지 않았나...생각이 듭니다.
추가로
직렬화시, serialVersionUID를 사용하는데
serialVersionUID를 이용하여 객체가 동일객체인지, 동일상태인지 확인하는데 사용합니다.
'개발 > java,spring' 카테고리의 다른 글
[자바, iBatis 배치활용]insert/update 속도 개선! (2) | 2017.08.25 |
---|---|
스프링 @RequestBody, @ResponseBody (0) | 2017.07.07 |
자바 날짜형식, 데이트 타입/포맷 확인 (0) | 2017.07.05 |
스프링/아이바티스 2개의 DB연결 (0) | 2017.05.23 |
스프링 redirect 파마미터 처리 (2) | 2017.03.20 |
java, jsp 페이징처리 (0) | 2017.03.16 |
버블정렬(bubble sort)_자바구현 (0) | 2016.11.08 |