π νκΈ° (Notes)
1. μ§λ ¬ν(Serialization)λ 무μμΈκ°?
- ν΅μ¬ μ μ: λ©λͺ¨λ¦¬ μμ **κ°μ²΄(Object)**λ₯Ό, λ€λ₯Έ μμ€ν
μΌλ‘ μ μ‘νκ±°λ λμ€ν¬μ μ μ₯ν μ μλ λ°μ΄ν° νν(Byte Stream, JSON λ±)λ‘ λ³ννλ κ³Όμ μ
λλ€.
- μμ§λ ¬ν(Deserialization): μ κ³Όμ μ λ°λλ‘, λ³νλ λ°μ΄ν°λ₯Ό λ€μ λ©λͺ¨λ¦¬ μμ κ°μ²΄λ‘ 볡μνλ κ²μ λ§ν©λλ€.
- μ νμνκ°?: κ°μ²΄λ νΉμ νλ‘κ·Έλλ° μΈμ΄μ λ©λͺ¨λ¦¬ ꡬ쑰μ λ¬Άμ¬μμ΄ κ·Έλλ‘λ μ΄λν μ μμ΅λλ€. λ°λΌμ λ€λ₯Έ νκ²½κ³Ό μν΅νκΈ° μν΄ νλ«νΌ λ
립μ μΈ λ°μ΄ν° ννλ‘ λ³νν΄μΌ ν©λλ€.
2. ꡬμ λ°©λ²: Javaμ κΈ°λ³Έ μ§λ ¬ν (Serializable)
- μ¬μ©λ²: μ§λ ¬ννλ €λ ν΄λμ€μ
implements java.io.Serializableμ μΆκ°ν©λλ€.
Serializableμ μ무 λ©μλλ μλ 'λ§μ»€ μΈν°νμ΄μ€(Marker Interface)'λ‘, JVMμκ² "μ΄ κ°μ²΄λ μ§λ ¬νν΄λ μ’λ€"λ νλ½μ νμμ
λλ€.
- μ£Όμ ν€μλ
transient: μ΄ ν€μλκ° λΆμ νλλ μ§λ ¬ν κ³Όμ μμ μ μΈλ©λλ€. (μ: λΉλ°λ²νΈ)
static: ν΄λμ€ μ체μ μν λ³μμ΄λ―λ‘ κ°μ²΄ μ§λ ¬ν λμμ΄ μλλλ€.
serialVersionUID: ν΄λμ€μ λ²μ μ λνλ΄λ κ³ μ IDμ
λλ€. μ§λ ¬νλ λ°μ΄ν°μ ν΄λμ€μ λ²μ μ΄ μΌμΉνλμ§ κ²μ¬νμ¬ νΈνμ±μ 보μ₯ν©λλ€.
- νμ€μ νκ³: 보μ μ·¨μ½μ , μ±λ₯ λ¬Έμ , Java μΈμ΄μλ§ μ’
μλλ€λ λͺ
νν λ¨μ λ€ λλ¬Έμ νλ κ°λ°μμλ κ±°μ μ¬μ©λμ§ μμ΅λλ€.
3. νλμ νμ€: JSONκ³Ό Jackson λΌμ΄λΈλ¬λ¦¬
- JSON (JavaScript Object Notation):
- νλ«νΌ λ
립μ±: λͺ¨λ μΈμ΄κ° μ½κ² μ΄ν΄νλ ν
μ€νΈ κΈ°λ° λ°μ΄ν° νμμ
λλ€.
- κ°λ
μ±:
key: value ννλ‘ μ¬λμ΄ μ§μ μ½κ³ μμ νκΈ° λ§€μ° νΈλ¦¬ν©λλ€.
- μΉ νμ€: νλ REST API ν΅μ μ μ¬μ€μ νμ€μ
λλ€.
- Spring Bootμ Jacksonμ μλν λ§λ²:
@RestControllerμμ κ°μ²΄λ₯Ό λ°ννλ©΄, λ΄μ₯λ Jackson λΌμ΄λΈλ¬λ¦¬κ° μλμΌλ‘ ν΄λΉ κ°μ²΄λ₯Ό JSON λ¬Έμμ΄λ‘ μ§λ ¬ννμ¬ HTTP μλ΅μ λ§λλλ€.
- λ°λλ‘, JSON λ°μ΄ν°κ° λ΄κΈ΄ HTTP μμ²μ΄ μ€λ©΄
@RequestBody μ΄λ
Έν
μ΄μ
μ΄ λΆμ κ°μ²΄λ‘ μλ μμ§λ ¬νν΄μ€λλ€.
- μ΄ λͺ¨λ κ³Όμ μ 리νλ μ
(Reflection) κΈ°μ μ ν΅ν΄ λ°νμμ κ°μ²΄μ ꡬ쑰λ₯Ό λΆμνμ¬ λμν©λλ€.
4. μ€λ¬΄ ν΅μ¬ ν¨ν΄: DTO (Data Transfer Object)
- λ¬Έμ μΈμ: JPAμ Entity κ°μ²΄λ₯Ό Controllerμμ API μλ΅μΌλ‘ μ§μ λ°ννλ©΄ μ λ©λλ€.
- μ΄μ :
- 무ν μν μ°Έμ‘°: μλ°©ν₯ μ°κ΄κ΄κ³κ° μ€μ λ Entityμ κ²½μ°, μ§λ ¬ν κ³Όμ μμ 무ν 루νμ λΉ μ§ μ μμ΅λλ€.
- λ―Όκ° μ 보 λ
ΈμΆ:
password νλ λ± μΈλΆμ λ
ΈμΆλλ©΄ μ λλ μ λ³΄κ° ν¬ν¨λ μνμ΄ μμ΅λλ€.
- κ°ν κ²°ν©: DB ν
μ΄λΈ ꡬ쑰 λ³κ²½μ΄ API μ€νμ μ§μ μ μΈ μν₯μ λ―Έμ³ μ μ§λ³΄μκ° μ΄λ €μμ§λλ€.
- ν΄κ²°μ±
: DTO ν¨ν΄μ μ¬μ©ν©λλ€. ν΄λΌμ΄μΈνΈμ μ£Όκ³ λ°μ λ°μ΄ν°λ§ λ΄μ μ μ© κ°μ²΄(DTO)λ₯Ό λ§λ€μ΄, Entityλ₯Ό DTOλ‘ λ³ννμ¬ λ°νν©λλ€. μ΄λ₯Ό ν΅ν΄ νμν λ°μ΄ν°λ§ μμ νκ² λ
ΈμΆνκ³ κ³μΈ΅μ λΆλ¦¬ν μ μμ΅λλ€.