2013년 8월 11일 일요일

[3주차 1일] 입출력(I/O) 2 - .Serializable

: 인스턴스를 byte배열로 변환하고 byte배열을 인스턴스로 복원하기 위한 interface



Serialize & Deserialize

- Serialize(Marshalling)
: 인스턴스 => byte배열

- Deserialize(Unmarchalling)
: byte배열 => 인스턴스



* java에서는 보안상 인스턴스의 byte배열화를 제한한다.
  그래서 serialize를 하기위해서는 java.io.Serializable를 구현해야 한다.

* ValueObject(DTO)는 특별한 경우가 아니면 serialize를 한다.


serialVersionUID

: serialize한 번호를 구분하기 위한 버전번호로 읽을 때 구분 용도로 사용한다.


위의 그림과 같이 두명의 사용자가 파일을 공유해서 읽고 쓸 때 만약 A사용자가 변경을 한다면 B사용자는 읽을 수 없는 상황이 발생될 수 있다.

* 명시적으로 serialVersionUID를 선언하지 않는 다면, 컴파일러가 인스턴스의 타입과 변수, 개수에 의존하여 자동으로 버전번호를 생성한다.

순서가 달라도 변수의 개수와 이름과 타입이 같다면 같은 버전 번호도 같다.


댓글 없음:

댓글 쓰기