직렬화(Serialize)란?
직렬화의 정의
- 어떤 환경의 데이터 구조를 다른 환경에 전송/저장하기 위해 바이트(Byte) 포맷으로 변환하는 과정
- 반대의 개념인 역직렬화는 바이트 포맷으로부터 데이터 구조를 추출하는 것
- 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 다시 변환하는 것
- 자바에서 객체를 전송 가능한 형태로 만드는 것
직렬화가 필요한 이유
기기마다 서로 다른 가상 메모리 주소 공간을 갖기 때문에 참조형 타입의 데이터들은 전달할 수 없다.
따라서 주소값이 아닌 Byte형태(기본형 타입)로 직렬화한 데이터로 전달해야 파싱이 가능한 데이터가 된다.
즉, 우리가 만국 공통어인 영어를 사용하듯 각자 모두가 알아들을 수 있는 형태로 변환해주는 과정이다!
그리고 직렬화를 하면 VM의 메모리에서 상주하는 객체 데이터를 그대로 영속화 할 수 있다. 즉, 프로그램이 종료돼도 사라지지 않는 데이터가 되는 것이다.
Java의 직렬화
직렬화 할 객체에 java.io.Serializable 인터페이스를 구현한다.
이 인터페이스 안을 살펴보면 정의가 하나도 없는데, 인터페이스를 구현하면 자바가 알아서 구현해준다. 만약, 비밀번호처럼 보안상 직렬화되면 안되는 값에는 데이터타입에 제어자인 transient를 붙여준다. (transient가 붙으면 해당 데이터 타입의 기본값으로 직렬화 된다.)
너무 어려운 개념... 여기저기 참고해서 적어봄..
직렬화(Serialization), 역직렬화(Deserialization)란?
인텐트로 객체를 넘길 때 직렬화라는 걸 사용해서 넘겼던 적이 있다. 예제 코드도 구글에 많이 있어서 그냥 썼었는데, 직렬화라는 용어 자체를 잘 모르는 채 썼기 때문에 공부하고 포스팅하려고
onlyfor-me-blog.tistory.com
Java 객체 직렬화(Serialization) 와 역직렬화(Deserialization)
Java의 직렬화와 역직렬화에 대해서 알아봅시다. 정의 Java에서 말하는 직렬화(Serialization)란 과연 뭘까? 말그대로 객체를 직렬화하여 전송 가능한 형태로 만드는 것을 의미한다. 객체들의 데이터
flowarc.tistory.com
[Java] 직렬화(Serialization)
[Java] 직렬화(Serialization) 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술 각자 PC의 OS마다 서로 다른
kim6394.tistory.com
직렬화, 역직렬화란?
Java 내부 시스템에서 사용되는(JVM 메모리에 올려져있는) 객체나 데이터를 외부에서 사용할 수 있도록 Byte 형태로 변환하는것.Java.io.Serializable 인터페이스를 impliments한 객체만이 직렬화가 가능하
velog.io
'ssung_항해일지 > 항해99_실전 프로젝트' 카테고리의 다른 글
실전 프로젝트 회고 (0) | 2023.04.23 |
---|---|
실전 프로젝트 - 35일차 (0) | 2023.04.15 |
실전 프로젝트 - 34일차 (0) | 2023.04.13 |
실전 프로젝트 - 28일차 (0) | 2023.04.07 |
실전 프로젝트 - 27일차 (0) | 2023.04.06 |