μΉμ 9. λΉ μ€μ½ν μκ° μλ£!!
λΉ μ€μ½νλ λΉμ΄ μ‘΄μ¬ν μ μλ λ²μλ₯Ό λ»νλ€.
μ±κΈν€ μ€μ½νμ λΉμ μ‘°ννλ©΄ μ€νλ§ μ»¨ν
μ΄λλ νμ κ°μ μΈμ€ν΄μ€μ μ€νλ§ λΉμ λ°ννλ€.
λ°λ©΄μ νλ‘ν νμ
μ€μ½νλ₯Ό μ€νλ§ μ»¨ν
μ΄λμ μ‘°ννλ©΄ μ€νλ§ μ»¨ν
μ΄λλ νμ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό μμ±ν΄μ λ°ννλ€.
νλ‘ν νμ λΉμ κ΄λ¦¬ν μ± μμ νλ‘ν νμ λΉμ λ°μ ν΄λΌμ΄μΈνΈμκ² μλ€.
μ±κΈν€ λΉμ μ€νλ§ μ»¨ν μ΄λ μμ± μμ μ μ΄κΈ°ν λ©μλκ° μ€νλμ§λ§, νλ‘ν νμ μ€μ½νμ λΉμ μ€νλ§ μ»¨ν μ΄λμμ λΉμ μ‘°νν λ μμ±λκ³ μ΄κΈ°ν λ©μλλ μ€νλλ€.
μ§μ ν λΉμ 컨ν
μ΄λμμ λμ μ°Ύμμ£Όλ DL(Dependency Lookup) μλΉμ€λ₯Ό μ 곡νλ κ²μ΄ λ°λ‘ ObjectProvider
μ javax.inject.Provider
μ΄λ€.
ObjectProvider
λ μ€νλ§μ΄ μ 곡νλ κΈ°λ₯μ΄κ³ , javax.inject.Provider
λ μλ° νμ€ κΈ°λ₯μ΄λ€.
νλ‘ν νμ
κ³Ό λ€λ₯΄κ² μ€νλ§μ΄ ν΄λΉ μ€μ½νμ μ’
λ£ μμ κΉμ§ κ΄λ¦¬νλ€.
λ°λΌμ μ’
λ£ λ©μλκ° νΈμΆλλ€.
μ’ λ₯
request: HTTP μμ² νλκ° λ€μ΄μ€κ³ λκ° λκΉμ§ μ μ§λλ μ€μ½ν. κ°κ°μ HTTP μμ²λ§λ€ λ³λμ λΉ μΈμ€ν΄μ€κ° μμ±λκ³ κ΄λ¦¬λλ€.
session: HTTP Sessionκ³Ό λμΌν μλͺ μ£ΌκΈ°λ₯Ό κ°μ§λ μ€μ½ν.
application: μλΈλ¦Ώ 컨ν μ€νΈ(ServletContext)μ λμΌν μλͺ μ£ΌκΈ°λ₯Ό κ°μ§λ μ€μ½ν.
λμμ μ¬λ¬ HTTP μμ²μ΄ μ€λ©΄ μ΄λ€ μμ²μ΄ λ¨κΈ΄ λ‘κ·ΈμΈμ§ ꡬλΆνκΈ° μ΄λ ΅λ€.
μ΄λ΄ λ μ¬μ©νκΈ° μ’μ κ²μ΄ request μ€μ½νλ€.
@Scope
μ proxyMode = ScopedProxyMode.TARGET_CLASS
λ₯Ό μ€μ νλ©΄, μ€νλ§ μ»¨ν
μ΄λλ CGLIBλΌλ λ°μ΄νΈ μ½λλ₯Ό μ‘°μνλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ μμ λ°μ κ°μ§ νλ‘μ κ°μ²΄λ₯Ό μμ±νλ€.
κ°μ§ νλ‘μ κ°μ²΄μλ μμ²μ΄ μ€λ©΄ κ·Έ λ λ΄λΆμμ μ§μ§ λΉμ μμ²νλ μμ λ‘μ§μ΄ λ€μ΄μλ€.
κ°μ§ νλ‘μ κ°μ²΄λ μλ³Έ ν΄λμ€λ₯Ό μμ λ°μ λ§λ€μ΄μ‘κΈ° λλ¬Έμ, μ΄ κ°μ²΄λ₯Ό μ¬μ©νλ ν΄λΌμ΄μΈνΈ μ
μ₯μμλ μ΄κ² μλ³ΈμΈμ§ μλμ§ λͺ°λΌλ λμΌνκ² μ¬μ©ν μ μλ€. β‘οΈ λ€νμ±
μΉμ
10. λ€μμΌλ‘ μκ° μλ£!!
+) 22. 07. 09. μΆκ°
Data Transfer Object
κ³μΈ΅ κ° λ°μ΄ν° κ΅ν(μ λ¬)μ μν κ°μ²΄λ₯Ό μλ―Ένλ€.
DTOλ λ©μλ νΈμΆ μλ₯Ό μ€μ΄κΈ° μν΄ μ¬μ©νλ€.
ν λ²μ νΈμΆλ‘ μ¬λ¬ κ°μ νλΌλ―Έν°λ₯Ό μΌκ΄ μ²λ¦¬νμ¬ μλ²λ‘μ μ볡 μ΄λμ μ€μ΄λ©΄, μ격 μμ
μμ λ€νΈμν¬μ μ€λ²ν€λκ° μ€μ΄λ€κΈ° λλ¬Έμ΄λ€.
DTOλ μΌλ°μ μΌλ‘ POJOλ‘ μμ±λλ€.
λΉμ¦λμ€ λ‘μ§μ΄ μλ νλ« λ°μ΄ν° ꡬ쑰λ€.
DTOλ μ€μ§ getter
, setter
λ©μλλ§ κ°μ§λ€.
μμνκ² λ°μ΄ν° μ λ¬λ§ νλ κ°μ²΄μ΄κΈ° λλ¬Έμ΄λ€.
보λ΄λ μͺ½μμ setter
λ₯Ό μ¬μ©ν΄ λ°μ΄ν°λ₯Ό DTOμ λ΄μ 보λ΄κ³ , λ°λ μͺ½μμ getter
λ₯Ό μ¬μ©ν΄ μ λ¬ λ°μ DTOλ‘λΆν° λ°μ΄ν°λ₯Ό κΊΌλ΄λ λ°©μμ΄λ€.
setter λ©μλλ₯Ό κ°μ§ κ²½μ°, μ΄λ₯Ό ν΅ν΄ μλ‘μ΄ κ°μ μ€μ ν μ μμΌλ―λ‘ ν΄λΉ DTOμ λ°μ΄ν°λ κ°λ³μ μ΄λ€.
λ§μ½ setter λ©μλλ₯Ό μμ νκ³ μμ± κ°λ€μ λΆλ³κ°μ²΄λ‘ λ§λ λ€λ©΄, DTOκ° μ λ¬νλ λ°μ΄ν°λ μ λ¬ κ³Όμ μ€ λ³μ‘°λμ§ μμμ 보μ₯ν μ μλ€.
*VO(Value Object)μ κ²½μ° Read Onlyμ κ°λ μ κ°μ§κ³ μλ€.
DTO | VO | |
---|---|---|
μ©λ | λ μ΄μ΄ κ° λ°μ΄ν° μ λ¬ | κ° μ체λ₯Ό νν |
λλ± κ²°μ | μμ±κ°μ΄ λͺ¨λ κ°λ€κ³ ν΄μ κ°μ κ°μ²΄κ° μλ | μμ±κ°μ΄ λͺ¨λ κ°μΌλ©΄ κ°μ κ°μ²΄ |
κ°λ³, λΆλ³ | setter μ‘΄μ¬ μ κ°λ³, setter λΉμ‘΄μ¬ μ λΆλ³ | λΆλ³ |
λ‘μ§ | getter, setter μΈμ λ‘μ§μ κ°μ§ μμ | getter, setter μΈμ λ‘μ§μ κ°μ§ μ μμ |
μ°Έκ³ μλ£
μ°μνTech, βμΈλΉμ DTO vs VOβ, https://youtu.be/z5fUkck_RZM
μ΄λΌμ΄λνλΈ μ€νλμ€, βMaria DB, Entity, Repository, DAO, DTOβ, https://youtu.be/4Pvd0KrTfvE
βThe DTO Pattern (Data Transfer Object)β, Baeldung, https://www.baeldung.com/java-dto-pattern