English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java에서 시리얼라이제이션과 외부화 간의 차이

시리얼라이제이션과 외부화는 객체를 스트림 바이트로 변환하여 데이터베이스나 메모리에 저장하는 과정입니다. java.io.Serializable 인터페이스를 구현한 클래스는 시리얼라이제이션할 수 있습니다. 또한, 애플리케이션 요구에 따라 외부화는 사용자 정의 시리얼라이제이션에 사용됩니다. 외부화는 java.io.Serializable를 확장합니다. 

순서시리얼라이제이션외부화
1
인터페이스
시리얼라이제이션은 표시 인터페이스입니다. 
외부화는 readExternal과 writeExternal 두 메서드를 포함합니다. 
2 
구현 로직 
이 인터페이스를 구현한 클래스는 JVM의 시리얼라이제이션 또는 영구화 책임을 Java에게 맡깁니다. JVM은 readObject와 writeObject를 사용하여 시리얼라이제이션을 수행합니다. 
외부화는 readExternal와 writeExternal 메서드를 재정의하여 응용 프로그램에 구현 로직 제어를 제공합니다.
3 
변수 무시 방법 
시리얼라이제이션에서 JVM은 Java 객체의 시리얼라이제이션과 디시리얼라이제이션 과정에서 일시적인 변수를 무시합니다. 
프로그래머는 Java 객체 외부화 과정에서 일부 변수를 무시하는 자신의 로직을 작성할 수 있습니다. 
4 
성능 
시리얼라이제이블 인터페이스에서 반영은 성능을 저하시킬 수 있습니다.
외부화는 완전히 구현 방법을 제어할 수 있습니다. 
5 
상속을 가진 객체 시리얼라이제이션 
1.상위 클래스가 시리얼라이제이블이 아니더라도 하위 클래스는 여전히 시리얼라이제이블이 될 수 있습니다.
2.하위 클래스가 시리얼라이제이블이 아니더라도 상위 클래스가 자동으로 시리얼라이제이블일 때 
이를 외부화에도 적용할 수 있습니다.

외부화 예제

class ExternalizableExample implements Externalizable {
   Integer id;
   @Override
   public void writeExternal(ObjectOutput out) throws IOException {
      out.writeInt(id);
   }
   @Override
   public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
      this.id = in.readInt();
   }
}

시리얼라이제이블 예제

class SerializableExample implements Serializable {
   private static final long serialVersionUID = 5081877L;
   String name;
}