직렬화(Serialization)
: 객체를 바이트 스트림으로 변환하는 과정을 말합니다. 이렇게 직렬화된 객체는 파일이나 네트워크를 통해 전송하거나 저장할 수 있습니다.
: 각 PC나 OS마다 서로 다른 가상 메모리 주소 공간을 갖기 때문에, 참조 타입의 데이터들은 네트워크나 파일 등으로 직접 전송할 수 없습니다. 이를 해결하기 위해서는 주소 값이 아니라, Byte 형태로 직렬화된 객체 데이터를 전달해야 합니다.
: 직렬화 하기 위해서는 해당 클래스가 Serializable 인터페이스를 구현해야 합니다.
역직렬화(Deserialization)
: 직렬화된 바이트 스트림을 객체로 변환하는 과정을 말합니다. 역직렬화를 통해 객체를 생성하고, 저장된 데이터를 객체에 복원할 수 있습니다.
직렬화/역직렬화 사용시 장단점
장점
1)객체를 전송 가능한 데이터로 변환할 수 있습니다.
2)분산 환경에서 객체를 공유할 수 있습니다.
3)코드 변경 없이 객체를 저장할 수 있습니다.
단점
1)직렬화는 구현 과정이 복잡합니다.
2)대규모 용량인 경우 직렬화/역직렬화 과정에서 성능 문제가 야기될 수 있습니다.
3)직렬화된 객체를 조작하는 보안 문제가 발생할 수 있습니다.
'java(자바)' 카테고리의 다른 글
[java(자바)] 리플렉션(Reflection)이란? _디버깅의 눈물 (0) | 2023.04.01 |
---|---|
[java(자바)] Generic이란? _디버깅의 눈물 (0) | 2023.03.31 |
[java(자바)] Call by Value와 Call by Reference의 차이 _디버깅의 눈물 (0) | 2023.03.29 |
[java(자바)] String, StringBuilder, StringBuffer의 차이 _디버깅의 눈물 (0) | 2023.03.28 |
[java(자바)] Wrapper Class란? _디버깅의 눈물 (0) | 2023.03.27 |