본문 바로가기

개발/Java

[Java]Serialization(직렬화)

스프링에 대해 공부하면서.. Serializable 인터페이스를 구현받는 부분이 있었다.

 

단순히 직렬화 라고만 알고 있었지, 정확히 어떤 목적으로 사용하는지 확실히 몰랐었기 때문에 이번에 정리해본다.

직렬화가 필요한 상황이라 한다면...

  • 생성한 객체를 파일로 저장하는 경우
  • 저장한 객체를 읽는 경우
  • 다른 서버에서 생성한 객체를 받는 경우

이런 상황에서 필요한 것이 직렬화(Serializable)이다. Serializable 인터페이스를 구현하면 JVM에서 해당 객체는 저장하거나 다른 서버로 전송할 수 있도록 해준다.

 

  • 자바 직렬화란 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술과
    바이트로 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)을 아울러서 이야기합니다.
  • 시스템적으로 이야기하자면 JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술과
    직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태를 같이 이야기합니다.

출처 : https://techblog.woowahan.com/2550/ 

 

* 직렬화 코드는 추후 추가 예정

'개발 > Java' 카테고리의 다른 글

[Java]Try-with-resource  (0) 2022.08.16
[Java] 자바의 메모리 영역(2)  (0) 2022.07.03
[Java] 자바의 메모리 영역(1)  (0) 2022.04.26
[Algorithm]구간합 구하기  (0) 2022.04.24
[Java]Comparator  (0) 2022.03.31