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;

    // ์ƒ์„ฑ์ž, ๊ฒŒํ„ฐ, ์„ธํ„ฐ ๋“ฑ...
}
๋ฐ˜์‘ํ˜•
Comments