• 직렬화!
  • 인터페이스이며 필드와 메서드 없음
  • 객체를 데이터 단위로 처리하기 위한 구조체(여러 형식을 한 단위로 묶어 만든 유도형)로 활용하기 위해 사용
  • 버전 관리를 위한 정적 필드가 추가됨
    • static final long serialVersionUIK = 1L;
    • 버전 값이 바뀌면 다른 클래스로 인식
  • 직렬화 통해 객체를 바이트 스트림으로 저장했다가 역 직렬화를 거쳐 다시 객체로 환원
    • 모든 필드가 직렬화 가능한 경우에 한정

객체를 파일로 저장하려면 결국 바이트스트림이 되어야됨! 파일은 곧 바이트의 스트림이니깐그런듯?

아닌가 객체 바이트 스트림 파일 이라함…

사용 예

  • 객체 단위 파일 입출력
  • TCP/IP 소켓 통신에서 송수신 단위
  • 백엔드 개발 시 활용
    • 스프링 환경에서 HTTP Session에 객체 저장 시 활용
    • JPA, Hibernate의 Entity 캐싱
    • Redis 등 캐시 적용 시 직렬화

직렬화시 메서드같은건 직렬화 대상이 아님. 필드등이 대상!!!!

직열화 대상이 아닌 경우

  • 직렬화 객체가 DB로부터 정보를 읽어온 경우 관리 시스템에서 사용되는 부가 정보는 제외하는 것이 일반적
    • 객체의 참조자 정보(주소)
    • 자료구조 관리를 위해 사용되는 정보
  • 네트워크로 송/수신 하지 말아야할 민감한 정보
    • 패스워드
    • 보안과 관련된 정보