티스토리 뷰

 

DTO, VO 객체 클래스를 잘 들여다보면 Serializable 인터페이스를 구현한 코드를 많이 볼 수 있다. 또는 대부분 습관적으로 작성하기도 한다.

직렬화는 자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte형태로 변환하는 기술이다. 역직렬화는 직렬화된 데이터를 원래대로 변화하는 것을 의미한다.

보통 직렬화는 자바 RMI(Remote Method Invocation), 캐시(Cache), 서블릿 세션(Servlet Session)에서 사용된다. 하지만 언급한 경우가 아닌데도 사용하는 Serializable 인터페이스를 구현하는 코드를 보았을 것이다.

객체를 담을 클래스는 기본적으로 Serializable를 구현하는 것을 권장한다. 직렬화 자체가 불필요한 오버헤드의 원인이 되기도 하지만, Serializable은 해당 클래스의 인스턴스를 직렬화가 가능하다는 것을 선언하는 것뿐이다. 지금 당장 직렬화를 하지 않더라도 범용적으로 구현하는 것은 나쁘지 않다.

전체적으로 직렬화가 필요한 경우보다는 필요 없는 경우가 훨씬 많지만, 설계를 고려해서 보면 잠재적인 직렬화 가능성이 있는 유형은 Serializable를 구현하자.

마지막으로 Serializable 인터페이스를 구현하면 serialVersionUID가 선언되어 있어야 한다. 명시적으로 선언하지 않으면 JVM에서 자동 생성해 주지만 명시적인 방법이 더 좋다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함