์ง๋ ฌํ๋ ์๋ฐ ์์คํ
๋ด๋ถ์์ ์ฌ์ฉ๋๋ ๊ฐ์ฒด ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ์ ์๋ฐ ์์คํ
์๋ ์ฌ์ฉํ ์ ์๋๋ก byte ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๊ธฐ์ ์
๋๋ค.
๊ฐ PC๋ OS๋ง๋ค ์๋ก ๋ค๋ฅธ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ๊ธฐ ๋๋ฌธ์ Reference Type์ ๋ฐ์ดํฐ๋ค์ ์ธ์คํด์ค๋ฅผ ์ ๋ฌ ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฃผ์๊ฐ์ด ์๋ Byte ํํ๋ก ์ง๋ ฌํ๋ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ผ ํฉ๋๋ค.
์ง๋ ฌํ๋ ๋ฐ์ดํฐ๋ค์ ๋ชจ๋ Primitive Type์ด ๋๊ณ , ์ด๋ ํ์ผ ์ ์ฅ์ด๋ ๋คํธ์ํฌ ์ ์ก ์ ํ์ฑ์ด ๊ฐ๋ฅํ ์ ์๋ฏธํ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ ์ก ๋ฐ ์ ์ฅ์ด ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ก ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก ์ง๋ ฌํ์
๋๋ค.
java.io.Serializable
์ธํฐํ์ด์ค ๊ตฌํ์ผ๋ก ์ง๋ ฌํ, ์ญ์ง๋ ฌํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
ex. JVM์ ์์ฃผํ๋ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ์์ํํ ๋, Servlet Session, Cache, Java RMI(Remote Method Ivocation)
@Entity
@AllArgsConstructor
@toString
public class Post implements Serializable {
private static final long serialVersionUID = 1L;
private String title;
private String content;
Post post = new Post("์ ๋ชฉ", "๋ด์ฉ");
byte[] serializedPost;
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
oos.writeObject(post);
serializedPost = baos.toByteArray();
}
}
ObjectOutputStream
์ ํตํด ์ง๋ ฌํํ์ฌ Byte๋ก ๋ณํ๋ ๊ฐ์ ์ ์ฅํฉ๋๋ค.
๐ก serialVersionUID๋ฅผ ์ง์ ์ค์ ํ๋ ์ด์
serialVersionUID๋ ์ ์ธํ์ง ์์๋ ์๋์ผ๋ก ํด์๊ฐ์ด ํ ๋น๋ฉ๋๋ค.
์ง์ ์ค์ ํ ์ด์ ๋ ํด๋์ค ๋ฉค๋ฒ ๋ณ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด serialVersionUID ๊ฐ ๋ํ ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์, ์ญ์ง๋ ฌํ ์ Exception์ด ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ฐ๋ผ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๊ด๋ฆฌํด์ผ ํด๋์ค์ ๋ณ์๊ฐ ๋ณ๊ฒฝ๋์ด๋ ์ง๋ ฌํ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๊ฒ ๋ฉ๋๋ค.
์ญ์ง๋ ฌํ๋ ์ง๋ ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ์ชฝ์์ ๋ค์ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ก ๋ณํํ๊ธฐ ์ํ ์์
์ ๋งํฉ๋๋ค.
์ง๋ ฌํ๋ ๋ฐ์ดํธ ํํ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ๋ณํํด์ JVM์ผ๋ก ์์ฃผ์ํค๋ ํํ์ ๊ธฐ์ ์
๋๋ค.
์ง๋ ฌํ ๋์์ด ๋ ๊ฐ์ฒด์ ํด๋์ค๊ฐ class path์ ์กด์ฌํด์ผ ํ๊ณ import
๋์ด ์์ด์ผ ํฉ๋๋ค.
์๋ฐ ์ง๋ ฌํ ๋์ ๊ฐ์ฒด์ ๋์ผํ serialVersionUID๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํฉ๋๋ค.
try (ByteArrayInputStream bais = new ByteArrayInputStream(serializedPost)) {
try (ObjectInputStream ois = new ObjectInputStream(bais)) {
Object objectPost = ois.readObject();
Post post = (Post) objectPost;
}
}
ObjectOutputStream
์ผ๋ก Byte์ ๊ฐ์ ๋ค์ ๊ฐ์ฒด์ ์ ์ฅํ์ฌ ์ญ์ง๋ ฌํ๋ฅผ ์งํํฉ๋๋ค.