- 직렬화!
- 인터페이스이며 필드와 메서드 없음
- 객체를 데이터 단위로 처리하기 위한 구조체(여러 형식을 한 단위로 묶어 만든 유도형)로 활용하기 위해 사용
- 버전 관리를 위한 정적 필드가 추가됨
static final long serialVersionUIK = 1L;- 버전 값이 바뀌면 다른 클래스로 인식
- 직렬화 통해 객체를 바이트 스트림으로 저장했다가 역 직렬화를 거쳐 다시 객체로 환원
- 모든 필드가 직렬화 가능한 경우에 한정
객체를 파일로 저장하려면 결국 바이트스트림이 되어야됨! 파일은 곧 바이트의 스트림이니깐그런듯?
아닌가 객체 → 바이트 스트림 → 파일 이라함…
사용 예
- 객체 단위 파일 입출력
- TCP/IP 소켓 통신에서 송수신 단위
- 백엔드 개발 시 활용
- 스프링 환경에서 HTTP Session에 객체 저장 시 활용
- JPA, Hibernate의 Entity 캐싱
- Redis 등 캐시 적용 시 직렬화
직렬화시 메서드같은건 직렬화 대상이 아님. 필드등이 대상!!!!
직열화 대상이 아닌 경우
- 직렬화 객체가 DB로부터 정보를 읽어온 경우 관리 시스템에서 사용되는 부가 정보는 제외하는 것이 일반적
- 객체의 참조자 정보(주소)
- 자료구조 관리를 위해 사용되는 정보
- 네트워크로 송/수신 하지 말아야할 민감한 정보
- 패스워드
- 보안과 관련된 정보