[SPRING]implements Serializable 사용하는 이유

CHOI IN HO·2023년 12월 5일
0

SPRING

목록 보기
21/45

📌 Serializable

객체를 파일에 저장하거나 파일에서 꺼내오기 위해서 또는 객체를 네트워크를 통해 전송하기 위해서는 미리 객체를 직렬화해야한다

서버가 다중화(여러개 존재) 되어 있고 세션 클러스터링을 통해 세션 관리를 하는 환경에서 도메인 객체가 세션에 저장될 때, 도메인 객체가 세션에 저장될 때
도메인 객체에 Serializable 인터페이스 클래스를 구현해야지 정상적으로 세션을 저장하고 꺼내올 수 있다!

도메인 객체가 세션에 저장하지 않는 단순한 데이터의 집합이고 컨트롤러에서 생성되어 뷰에서 소멸하는 데이터의 전달체라면 객체 직렬화는 고려하지 않아도 되는 부분이다.

언제, 어디서 사용될까?

  • JVM 메모리에서만 상주되어 있는 객체 데이터를 그대로 영속화가 필요할 때 사용
  • 시스템이 종료되더라도 없어지지 않는 장점을 가지며 영속화된 데이터이기 때문에 네트워크로 전송도 가능
  • 필요할 때 직렬화된 객체 데이터를 가져와서 역직렬화하여 객체를 바로 사용할 수 있게 된다.

📌자바 직렬화란

자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)을 아울러서 이야기한다.

시스템적으로 이야기하자면 JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술과 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태를 같이 이야기한다.

직렬화 방법


위 예제에서 객체를 직렬 화하여 바이트 배열(byte []) 형태로 변환

profile
개발자기 되기 위해선 무엇이든!

0개의 댓글