직렬화
객체 -> 바이트 스트림
자바에서는 Serializable 인터페이스를 구현한 클래스의 인스턴스를 직렬화할 수 있다. 직렬화된 데이터는 파일로 저장하거나 네트워크를 통해 전송할 수 있다.
역직렬화
바이트 스트림 -> 객체
역직렬화는 직렬화된 바이트 스트림을 다시 자바 객체로 변환하는 과정이다. 이렇게 복원된 객체는 원래의 상태와 속성을 가지게 된다.
단점
- 수정 어려움: Serializable 인터페이스를 구현한 클래스를 릴리스한 후에는 해당 클래스의 구조를 수정하기 어렵다. 이로 인해 버전 관리와 호환성 문제가 발생할 수 있다.
- 보안 문제: 역직렬화는 보안 취약점을 가질 수 있다. 악의적인 사용자가 신뢰할 수 없는 직렬화 데이터를 역직렬화하면 애플리케이션의 보안에 위협을 가할 수 있다.
- 크로스 플랫폼 호환성: 직렬화된 데이터는 자바 특정 형식으로 제한되므로 다른 플랫폼 간 데이터 교환에 제한이 있다.
대안
크로스 플랫폼 구조화된 데이터 표현(cross-platform structured data representation)
JSON 과 protocol buffer 가 예시임.
- JSON -> 인간이 읽고 쓰기 쉬운 형식으로 데이터를 표현하는 데 사용되며, 많은 언어에서 지원
- Protocol buffer -> 이진 형식으로 데이터를 표현하며, 다양한 언어에서 사용할 수 있는 스키마 기반 형식
'Backend > Java Spring' 카테고리의 다른 글
[Java] 제너릭(Generic) (0) | 2023.11.17 |
---|---|
[Java] 공유 중인 가변 데이터 (0) | 2023.11.12 |
[Spring] @Transactional (2) | 2023.11.09 |
[Spring] singleton scope (0) | 2023.11.05 |