본문 바로가기

java(자바)

[java(자바)] 직렬화(Serialization)와 역직렬화(Deserialization) _디버깅의 눈물

직렬화(Serialization)

: 객체를 바이트 스트림으로 변환하는 과정을 말합니다. 이렇게 직렬화된 객체는 파일이나 네트워크를 통해 전송하거나 저장할 수 있습니다. 

: 각 PC나 OS마다 서로 다른 가상 메모리 주소 공간을 갖기 때문에, 참조 타입의 데이터들은 네트워크나 파일 등으로 직접 전송할 수 없습니다. 이를 해결하기 위해서는 주소 값이 아니라, Byte 형태로 직렬화된 객체 데이터를 전달해야 합니다. 

: 직렬화 하기 위해서는 해당 클래스가 Serializable 인터페이스를 구현해야 합니다.

 

 

역직렬화(Deserialization)

: 직렬화된 바이트 스트림을 객체로 변환하는 과정을 말합니다. 역직렬화를 통해 객체를 생성하고, 저장된 데이터를 객체에 복원할 수 있습니다. 

 

 

직렬화/역직렬화 사용시 장단점

장점

1)객체를 전송 가능한 데이터로 변환할 수 있습니다.

2)분산 환경에서 객체를 공유할 수 있습니다.

3)코드 변경 없이 객체를 저장할 수 있습니다.

 

단점

1)직렬화는 구현 과정이 복잡합니다.

2)대규모 용량인 경우 직렬화/역직렬화 과정에서 성능 문제가 야기될 수 있습니다.

3)직렬화된 객체를 조작하는 보안 문제가 발생할 수 있습니다.