Search

์ง๋ ฌํ™”

์ง๋ ฌํ™” (Serialization)

๊ฐ์ฒด๋ฅผ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ์ „์†กํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ๋กœ ์ €์žฅ ์œ„ํ•ด ๋ฐ”์ดํŠธ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •

์ง๋ ฌํ™” ์˜ˆ์‹œ์ฝ”๋“œ

โ€ข
Person.java
import java.io.Serializable; public class Person implements Serializable { private static final long serialVersionUID = 1L; 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 + "}"; } }
Java
๋ณต์‚ฌ
โ€ข
SerializePerson.java
import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.Scanner; public class SerializePerson { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ ๋ฐ›๊ธฐ System.out.print("Enter name: "); String name = scanner.nextLine(); System.out.print("Enter age: "); int age = scanner.nextInt(); // Person ๊ฐ์ฒด ์ƒ์„ฑ Person person = new Person(name, age); // ํŒŒ์ผ์— ์ง๋ ฌํ™” try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Person.dat"))) { oos.writeObject(person); System.out.println("Person object has been serialized and saved to Person.dat"); } catch (IOException e) { e.printStackTrace(); } finally { scanner.close(); } } }
Java
๋ณต์‚ฌ

์—ญ์ง๋ ฌํ™” ์˜ˆ์‹œ์ฝ”๋“œ

import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; public class DeserializePerson { public static void main(String[] args) { // ํŒŒ์ผ์—์„œ ์—ญ์ง๋ ฌํ™” try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Person.dat"))) { Person person = (Person) ois.readObject(); System.out.println("Person object has been deserialized: " + person); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } }
Java
๋ณต์‚ฌ

SerialVersionUID

ํด๋ž˜์Šค์˜ ๊ตฌ์กฐ ๋ณ€๊ฒฝ ์‹œ, ์ด๋ฏธ ์ง๋ ฌํ™”๋œ ๊ฐ์ฒด์™€ ํด๋ž˜์Šค๊ฐ„์˜ ํ˜ธํ™˜์„ฑ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž
ํด๋ž˜์Šค์˜ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ ๋ณ€๊ฒฝ ์‹œ, serialVersionUID ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค.
๋ฒ„์ „ ๋ณ€๊ฒฝ ์—†์ด, ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์—ญ์ง๋ ฌํ™” ์‹œ, InvalidClassException์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
import java.io.Serializable; public class Person implements Serializable { private static final long serialVersionUID = 1L; // ๊ณ ์œ  ์‹๋ณ„์ž private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } // Getter, Setter, toString() ๋“ฑ ํ•„์š”ํ•œ ๋ฉ”์†Œ๋“œ๋“ค }
Java
๋ณต์‚ฌ

๋ณ€๊ฒฝ ์ „

private static final long serialVersionUID = 1L;
Java
๋ณต์‚ฌ
โ€ข
๋ณ€์ˆ˜ ์ถ”๊ฐ€
private String name; private int age; private String address;
Java
๋ณต์‚ฌ

๋ณ€๊ฒฝ ํ›„

private static final long serialVersionUID = 2L;
Java
๋ณต์‚ฌ
์‹œ๋ฆฌ์–ผ๋ฒ„์ „ UID ๋ฅผ ๋ฐ”๊พธ์–ด์ฃผ์—ˆ๋‹ค.