-
자바의 직렬화(Serialization)란?Language/JAVA 2022. 11. 29. 13:10728x90
자바의 직렬화란?
- 객체의 상태를 바이트배열과 같은 바이트 스트림으로 만드는 기법라고 할 수 있다.
- 사용 되는 경우는 객체의 상태를 영속해야 할 필요가 있을 때 사용한다. 여기서 객체가 영속되는 곳은 캐시와 같은 메모리에 저장할 수도 있고, DB나 파일일 수도 있다. 또한 다른 VM에 전송해야 할 때 바이트 스트림으로 변환해서 전송할 때 사용된다.
- 직렬화된 객체는 바이트 스트림(이진 데이터)으로 저장되며, 파일이나 네트워크로 전송될 수 있다.
- 사람이 읽을 수 있는 형식이 아니며, 바이트 단위로 객체의 상태와 정보가 저장된다.
사용 방법
영속화하고자 하는 클래스에 Serializable 인터페이스를 implements하면 된다.
직렬화가 잘 사용되지 않는 이유?
보안
직렬화 시 byte[] 형식의 값을 얻을 수 있다.
하지만 해당 array의 특정 인덱스 값을 바꾼다면, 다시 역직렬화 했을 때 그 값이 변화되고 만다.
자바 직렬화는 꼭 사용해야 할까?
최근에는 새로운 시스템에 바이트스트림으로 변환하는 좋은 메커니즘이 많다.
크로스 플랫폼에 적합한 데이터 표현 형식으로는 JSON, CSV 등이 있으므로 해당 형식을 사용하는 것이 좋다.
자바 직렬화와 Json 직렬화의 차이
자바에서 Json 직렬화는 객체를 Json 포맷으로 변환하는 작업을 의미한다.
데이터 포맷 이진 포맷 텍스트 포맷 (JSON) 호환성 자바 환경에서만 사용 가능 플랫폼 및 언어 독립적 (다른 시스템과의 호환성 높음) 가독성 사람이 읽을 수 없음 사람이 읽을 수 있는 형식 성능 이진 데이터로 빠름 텍스트 기반으로 상대적으로 느림 복잡도 Serializable 인터페이스 구현 필요 추가 라이브러리(Jackson, Gson 등) 필요 주 사용 사례 자바 내부 시스템, 자바 객체 저장 및 전송 REST API, 클라이언트-서버 간 데이터 교환 'Language > JAVA' 카테고리의 다른 글
자바의 Stream이란? (0) 2022.11.29