Java Serialization

sametklou

Java Serialization

Java Serialization, bir nesnenin durumunu (state) ve veri yapısını dizi haline getirerek, dosyaya ya da ağ üzerinden iletilmesini sağlayan bir işlemdir. Bu sayede nesne byte dizisi olarak kaydedilip, daha sonra geri yüklenebilir.

Serialization Nasıl Yapılır?

Bir sınıfın serializable olduğunu belirtmek için java.io.Serializable arabirimini uygulamanız yeterlidir. Bu arabirimi uyguladığınızda sınıfın tüm alanları serializable olur.

import java.io.Serializable;

public class Ogrenci implements Serializable {
    private String ad;
    private int yas;

    // getter ve setter metotları
}

Nesneyi Serialize Etme

Nesneleri serializable bir dosyaya yazmak için ObjectOutputStream sınıfını kullanabilirsiniz. Aşağıdaki örnek, Ogrenci sınıfından bir nesneyi serialize edip dosyaya yazmaktadır.

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class SerializationOrnegi {
    public static void main(String[] args) {
        try {
            Ogrenci ogr = new Ogrenci("Ali", 20);
            FileOutputStream fileOut = new FileOutputStream("ogrenci.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(ogr);
            out.close();
            fileOut.close();
            System.out.println("Nesne serialize edildi ve dosyaya yazıldı.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Nesneyi Deserialize Etme

Serialize edilmiş bir nesneyi geri yüklemek için ObjectInputStream sınıfını kullanabilirsiniz. Aşağıdaki örnek, dosyaya yazılmış bir Ogrenci nesnesini okuyarak geri yüklemektedir.

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class DeserializationOrnegi {
    public static void main(String[] args) {
        try {
            FileInputStream fileIn = new FileInputStream("ogrenci.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            Ogrenci ogr = (Ogrenci) in.readObject();
            in.close();
            fileIn.close();
            System.out.println("Nesne deserialize edildi: " + ogr.getAd() + ", " + ogr.getYas());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Java Serialization ile nesneleri serializable hale getirerek veri transferini kolaylaştırabilir ve veri manipülasyonunu önleyebilirsiniz. Ayrıca, nesneleri dosyalara kaydedebilir ve daha sonra geri yükleyebilirsiniz.

Java Serialization Nedir?

Java'da Serialization, nesnelerin ağ üzerinde iletilmesine veya kalıcı hale getirilmesine olanak tanır. Nesneleri bir dosyaya yazmak veya ağ üzerinde iletmek için kullanılır.

Java Serialization Nasıl Çalışır?

Java Serialization, java.io.Serializable arayüzünü implemente eden sınıfları işler. Bu arayüz, sınıfın serileştirilebilir olduğunu belirtir. Nesne serileştirildiğinde, Java nesneyi byte dizisine dönüştürerek saklar. Bu durumda, nesne ağ üzerinden gönderilebilir veya dosyaya yazılabilir.

Java Serialization Örneği

Örnek olarak, bir Person sınıfını düşünelim:

import java.io.Serializable;

public class Person implements Serializable {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
}

Bu sınıfı serileştirmek için:

import java.io.*;

public class SerializationExample {
    public static void main(String[] args) {
        Person person = new Person("Alice", 30);

        try {
            FileOutputStream fileOut = new FileOutputStream("person.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(person);
            out.close();
            fileOut.close();
            System.out.println("Serialized data is saved in person.ser");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Bu örnekte, Person sınıfı serileştirilerek person.ser dosyasına kaydedilir.

Java Serialization hakkında daha fazla bilgi edinmek için Java belgelerine başvurabilirsiniz.