Coding Planet
[JAVA] ์ง๋ ฌํ (Serialization), ์ญ์ง๋ ฌํ (Deserialization) ๋ณธ๋ฌธ
๐ป Java Study/Java ์ด๋ก ์ ๋ฆฌ
[JAVA] ์ง๋ ฌํ (Serialization), ์ญ์ง๋ ฌํ (Deserialization)
jhj.sharon 2023. 8. 9. 23:21๋ฐ์ํ
1. ์ง๋ ฌํ๋ (Serialization)?
์ง๋ ฌํ (Serialization)๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค. ์ด ๋ฐ์ดํธ ์คํธ๋ฆผ์ ํ์ผ๋ก ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ค๋ฅธ ์์คํ ์ ์ ์กํ ์ ์๋ค. ๋ฐ๋๋ก, ์ญ์ง๋ ฌํ (Deserialization)๋ ๋ฐ์ดํธ ์คํธ๋ฆผ์ ๋ค์ ์๋์ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
2. ์ง๋ ฌํ์ ๋ชฉ์
- ์์์ฑ (Persistence): ๊ฐ์ฒด์ ์ํ๋ฅผ ์๊ตฌ ์ ์ฅ ๋งค์ฒด (์: ํ์ผ)์ ์ ์ฅํ๊ณ ๋์ค์ ๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ฐ์ฒด๋ฅผ ๋ณต์ํ ์ ์๋ค.
- ์๊ฒฉ ํ๋ก์์ ํธ์ถ (Remote Procedure Call): ๊ฐ์ฒด๋ฅผ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ค๋ฅธ JVM ๋๋ ์์คํ ์ผ๋ก ์ ์กํ๋ ค๋ฉด ๊ทธ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํด์ผ ํ๋ค.
- ๊ฐ์ฒด์ ๊น์ ๋ณต์ฌ (Deep Copy): ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํ\Java์์๋ java.io.Serializable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํํ ์ ์์ต๋๋ค. ์ด ์ธํฐํ์ด์ค๋ ๋ง์ปค ์ธํฐํ์ด์ค๋ก, ์ด๋ ํ ๋ฉ์๋๋ ํฌํจํ์ง ์์ต๋๋ค. ๊ทธ์ ํด๋น ํด๋์ค์ ๊ฐ์ฒด๊ฐ ์ง๋ ฌํ๋ ์ ์์์ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.ํ๊ณ ์ฆ์ ์ญ์ง๋ ฌํํจ์ผ๋ก์จ ๊ฐ์ฒด์ ๊น์ ๋ณต์ฌ๋ณธ์ ์์ฑํ ์ ์๋ค.
3. JAVA์์์ ์ง๋ ฌํ
- Java์์๋ java.io.Serializable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํํ ์ ์๋ค. ์ด ์ธํฐํ์ด์ค๋ ๋ง์ปค ์ธํฐํ์ด์ค๋ก, ์ด๋ ํ ๋ฉ์๋๋ ํฌํจํ์ง ์๋๋ค. ๊ทธ์ ํด๋น ํด๋์ค์ ๊ฐ์ฒด๊ฐ ์ง๋ ฌํ๋ ์ ์์์ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
- ์ฃผ์ํ ์ ์, ๋ชจ๋ ๊ฐ์ฒด์ ์ํ๊ฐ ์ง๋ ฌํ๋ ์ ์๋ ๊ฒ์ ์๋๋ค. ์๋ฅผ ๋ค์ด, ์ค๋ ๋ ๊ฐ์ฒด๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ํ๋ด๋ ๊ฐ์ฒด ๋ฑ์ ์ง๋ ฌํ๋ ์ ์๋ค. ๋ํ, ์ง๋ ฌํํ๋ ๊ฐ์ฒด ๋ด๋ถ์ ์ฐธ์กฐํ๋ ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ์์ ๊ฒฝ์ฐ, ๊ทธ ๊ฐ์ฒด ๋ํ Serializable์ ๊ตฌํํด์ผ ํ๋ค.
import java.io.Serializable;
public class Person implements Serializable {
private String name;
private int age;
// ์์ฑ์, ๊ฒํฐ, ์ธํฐ ๋ฑ...
}
๋ฐ์ํ
'๐ป Java Study > Java ์ด๋ก ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments