シリアル化、逆シリアル化とは?


Java内部システムで使用されるオブジェクトまたはデータを、外部で使用するためにByteに変換します.

シリアル化

  • Java.io.Serializableインタフェースが隠されているオブジェクトのみをシリアル化
  • オブジェクトのいずれかのオブジェクトメンバーにシリアル・インタフェースが隠されていない場合は、この操作は実行できません.
  • @Trasientオブジェクトで宣言されたメンバーは送信されません.(シリアルを除く)
  • シリアル化e.g

  • Java.io.Serializable  インタフェースは継承されます.
  • serialVersionUID.
  • @Entity
    @AllArgsConstructor
    @toString
    public class HubContent implements Serializable {
    private static final long serialVersionUID = 1L;
        
    private String title;
    private String subtitle;
    ...
  • Javaシリアル化  java.io.ObjectOutPutStream  オブジェクトの使用
  • オブジェクトをシリアル化し、Byte配列に変換します.
  • HubContent hubcontent = new HubContent("제목", "부제");
    byte[] serializedHubContent;
    try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
    try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
        oos.writeObject(hubContent);
            
        // 직렬화된 HubContent 객체
        serializedHubContent = baos.toByteArray();
    }
    

    逆シリアル化e.g

  • 逆シリアル化を行うには、シリアルオブジェクトのクラスがClassPathに存在し、インポートする必要があります.
  • try (ByteArrayInputStream bais = new ByteArrayInputStream(serializedHubContent)) {
    try (ObjectInputStream ois = new ObjectInputStream(bais)) {
            
        // 역직렬화된 HubContent 객체를 읽어온다.
        Object objectHubContent = ois.readObject();
        HubContent hubContent = (HubContent) objectHubContent;
    }

    シリアルVersionUIDを管理する理由


  • Javaシリアル化ターゲットオブジェクト  serialVersionUIDが必要です.
  • 図に示すように、同一オブジェクトであるか否かを識別することが必要である.
  • 最初の作成時間:22/04/16