All Honey Tip

[기술 면접] 9. Java에서 직렬화란 무엇인가요?

수정 일:

발행 일:

Java에서 직렬화란 무엇인가요?

저번 시간에 이어, 이번엔 Java의 직렬화에 대한 질문들에 대해 알아보겠습니다. Java를 공부했을지라도 생소한 내용일 수 있습니다. 저도 면접 질문을 정리하고 대비하며 마주한 질문들이기 때문에 처음에 많이 어색했는데요, 공부하시다가 써본적이 있는 개념일 수도 있으실 겁니다.

Java에서 직렬화란 무엇인가요?





Q: Java에서 직렬화란 무엇인가요?

객체의 상태를 영속화 하는 메커니즘으로, 객체를 다른 환경에 저장했다가 저장한 상태 그대로 재사용할 수 있게 만드는 과정입니다.









Q: Java 직렬화는 언제 사용하나요?

객체 상태를 영속해야 할 필요가 있을 때 사용합니다.

  1. File, DB, Cache 등에 저장
  2. 바이트 스트림으로 변환해서 전송할 때







Q: Java 직렬화는 어떻게 사용하나요?

Serializable interface를 클래스에서 implements합니다. 그리고 ObjectOutputStream이 사용하는 ByteArrayOutputStream 객체와 toByteArray() 메서드를 사용해서 직렬화된 바이트스트림을 획득할 수 있습니다.

여기서 역직렬화는 ObjectInputStream의 readObject()메서드를 이용합니다.

  • Serializable은 아무 것도 없지만, 사용하지 않으면, NotSerializableException이 발생합니다.
  • 직렬화 & 역직렬화 흐름
    • Object – writeObject – DB / File / Memory – readObject – Object






Q: serialVersionUID를 선언하는 이유가 무엇인가요?

JVM은 직렬화나 역 직렬화 시점의 클래스에 대해 version 번호를 부여합니다. 클래스의 정의가 바뀌게 되면, version 번호가 재 할당되는데 직렬화와 역 직렬화의 version 번호가 같은지 검사해야 하므로 사용합니다.






Q: 직렬화의 단점은 무엇인가요?

직렬화 시 용량이 커지게 되거나 객체 인스턴스의 변경 시 예외가 발생합니다.







아래 서적을 통해 직렬화에 대한 추가 개념들을 확인하시길 바랍니다 🙂

윤성우의 열혈 Java 프로그래밍:, 오렌지미디어 스프링 입문을 위한 자바 객체 지향의 원리와 이해, 위키북스 초보자도 간단히 단숨에 배우는 자바:동영상 강의 제공 | 쉽게 빠르게 편하게 시작하는 프로그래밍 입문, 터닝포인트






마치며

이번 시간엔 Java의 직렬화에 대해 알아보았습니다.

다음 시간에는 Error와 Exception의 차이점에 대해 알아보겠습니다.

Java에서 직렬화란 무엇인가요?






코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다