[JAVA] λ°μ΄ν° μ§λ ¬ν(serialization) νλ μ΄μ
πκΆκΈμ¦?
νλ‘μ νΈλ₯Ό μ§ννλ©΄μ DTO, VO ν΄λμ€ λͺ λμ
implements Serializable
μ΄λ κ² λΆμ΄λ κ²½μ°λ₯Ό λ§μ΄ λ΄€λ€.
λΉμ₯ λμ 보μ΄λ ν¨κ³Όλ μλ κ² κ°μλ° μ μ§λ ¬νλ₯Ό ν΄μ£Όμ΄μΌ νλμ§ μλ¬Έμ΄ μκ²Όλ€.
μμ§ 100% μ΄ν΄ν κ²μ μλμ§λ§, μμλ³Έ λ° λλ‘ μ 리ν΄λ³΄λ €κ³ νλ€.
βοΈprivate static final long serialVersionUID λ μ μ¬μ©νλ?
λλ©μΈ κ°μ²΄μ private static final long serialVersionUID = 8999559983943337176L; μ΄λ° μμΌλ‘ λ©€λ²λ³μκ° λ€μ΄ μλ κ²½μ°κ° μλ€.
μ΄λ₯Ό μ¬μ©νλ μ΄μ λ type safety λλ¬Έμ΄λ€. μλ₯Όλ€μ΄ μ§λ ¬νν κ°μ²΄λ₯Ό μ격μ§μ μ μ‘μ νλ€κ³ νμ κ²½μ°μ μ μ‘λ κ°μ²΄μ ν΄λμ€μ μ격μ§μ ν΄λμ€μ λμΌνμ§ μ¬λΆ 체ν¬λ₯Ό ν΄μ£Όλ κ²μ΄λ€. serialVersionUID λ€λ₯Όκ²½μ° java.io.InvalidClassException μ΄ λ°μνλ€.
βοΈλ°μ΄ν° μ§λ ¬ν(serialization) μ νμνκ°?
λ¨Όμ λ°μ΄ν° μ§λ ¬νλ, λ©λͺ¨λ¦¬λ₯Ό λμ€ν¬μ μ μ₯νκ±°λ λ€νΈμν¬ ν΅μ μ μ¬μ©νκΈ° μν νμμΌλ‘ λ³ννλ κ²μ λ§νλ€.
(μμ§λ ¬ν desrializationλ κ·Έ λ°λ)
κ·Έλ λ€λ©΄, μ λ°μ΄ν°λ₯Ό μλ κ·Έλλ‘ κ·Έλ₯ μ¬μ©νλ©΄ μλκ³ μ§λ ¬νλ₯Ό ν΄μ£Όμ΄μΌ ν κΉ?
λ°λ‘ λμ€ν¬μ μ μ₯νκ±°λ ν΅μ μ μ¬μ©νλ λ°μ΄ν°λ πκ° νμ λ°μ΄ν°λ§ κ°λ₯νκΈ° λλ¬Έμ΄λ€.
μ°Έκ³ λ‘ λ°μ΄ν°λ€μ λ©λͺ¨λ¦¬ ꡬ쑰λ ν¬κ² 2κ°μ§λ‘ λλλ€.
1. κ° νμ λ°μ΄ν°(Value Type) : μ°λ¦¬κ° νν μ μΈν΄μ μ¬μ©νλ int, float, char λ±, κ° νμ λ°μ΄ν°λ€μ μ€νμ λ©λͺ¨λ¦¬κ° μμ΄κ³ μ§μ μ κ·Όμ΄ κ°λ₯νλ€.
2. μ°Έμ‘° νμ λ°μ΄ν°(Reference Type) : μλ°μμ byte, short, char, int, long, boolean, float, double μ΄λ κ² 8κ°μ§ νμ μ μ μΈνκ³ λ λͺ¨λ μ°Έμ‘° νμ λ°μ΄ν°μ ν΄λΉνλ€. μ°Έμ‘° λ³μλ₯Ό μ μΈνλ©΄ νμ λ©λͺ¨λ¦¬κ° ν λΉλκ³ μ€νμμλ μ΄ ν λ©λͺ¨λ¦¬λ₯Ό μ°Έμ‘°νλ(νμ λ©λͺ¨λ¦¬ λ²μ§ μ£Όμλ₯Ό κ°μ§κ³ μμ) κ΅¬μ‘°λ‘ λμ΄μλ€.
μ κ° νμ λ°μ΄ν°λ§ ν΅μ μ΄ κ°λ₯ν κΉ?
μ°Έμ‘°νμ λ°μ΄ν°λ₯Ό ν΅μ μ μ¬μ©ν μ μλ μ΄μ λ κ° pc λ§λ€ μ¬μ©νλ λ©λͺ¨λ¦¬ κ³΅κ° μ£Όμκ° λͺ¨λ λ€λ₯΄κΈ° λλ¬Έμ΄λ€.
λ§μ½ λ΄κ° Aκ°μ²΄(0x00016413) λ₯Ό λ€λ₯Έ pcλ‘ μ μ‘νλ€λ©΄ μ΄ λ°μ΄ν°λ₯Ό λ°μ pcμ 0x00016413 μ£Όμμλ μ ν λ€λ₯Έ κ°μ΄
μ‘΄μ¬νλ€.
κ·Έλ°λ°, μ§λ ¬νλ₯Ό νλ©΄ κ° μ£Όμκ°μ΄ κ°μ§λ λ°μ΄ν°λ€μ λͺ¨λ κ° νμμΌλ‘ λ°κΎΈμ΄μ€λ€.
κ·Έλ¦¬κ³ μ§λ ¬νλ λ°μ΄ν°λ€μ ν΅μ μμ νμ±μ΄ κ°λ₯ν μ μλ―Έν λ°μ΄ν°κ° λλ€.