DevBoi

[Java] 직렬화와 역 직렬화 본문

Language/[Java]

[Java] 직렬화와 역 직렬화

HiSmith 2022. 3. 15. 23:46
반응형

직렬화는 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부 자바 시스템에서도 사용할수 있도록
바이트 형태로 데이터를 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술을 어울러서 이야기한다.

 

1.직렬화

직렬화란, 객체를 직렬화 하여, 전송 가능한 형태로 만드는 것이다.

객체들의 데이터를 연속적인 데이터로 변형하여, Stream을 통해, 데이터를 읽도록해준다.

객체들을 통째로 파일로 저장하거나 전송하고싶을때 사용한다.

 

2.역직렬화

직렬화된 파일 등을 역으로 직렬화하여 다시 객체의 형태로 만드는 것을 의미한다.

저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원한다.

 

 

transient를 이용하면, 직렬화 대상에서 재외할수있다.

 

SerialVersionUID 클래스의 버전관리

직렬화를 하면 내부에서 자동으로 해당 ID라는 고유의 번호를 생성,관리한다.

이 UID는 직렬화와 역직렬화 할때 중요한 역할을 한다.

클래스의 내용이 변경될때, 해당 값이 변경된다.

따라서 직렬화를 하고, 역직렬화를 하기 전에, 클래스의 구성이 변경되었다면(멤버변수하나 추가) SUID값도 변경되게 되고

이렇게 클래스 버전 차이가 발생해서, SUID값이 다른경우에는, 예외가 발생하게 된다.

반응형

'Language > [Java]' 카테고리의 다른 글

[Java] final,finally,finalize 차이점  (0) 2022.03.16
[Java] 제네릭이란?  (0) 2022.03.15
[Java] String, String Builder, StringBuffer  (0) 2022.03.15
[Java] static 의 의미  (0) 2022.03.15
[Java] Boxing UnBoxing  (0) 2022.03.15