sseλ₯Ό μ¬μ©ν μ€μκ° μλ¦Ό μλΉμ€ ꡬν ν μλ²κ° μ λμκ°λ€ λͺ λ² μμ² μλ λμ λ»λ μλ¬κ° λ°μνλ€. κ²°λ‘ λΆν° λ§νλ©΄ DBμμ 컀λ₯μ μ΄ λμ΄μ§μ§μμ μκΈ΄ μλ¬μλ€.
μ΄ μλ¬λ₯Ό ν΄κ²° νλ©΄μJPAμ OSIVμ λν΄ λ€μκΈ κ³΅λΆν μ μμλ€.
OSIV (open session in view)
OSIVμ λμ μ리λ μλμ κ°λ€
- ν΄λΌμ΄μΈνΈμ μμ²μ΄ λ€μ΄μ€λ©΄ μλΈλ¦Ώ νν°λ, μ€νλ§ μΈν°μ ν°μμ μμμ± μ»¨ν μ€νΈλ₯Ό μμ±νλ€. λ¨ μ΄ μμ μμ νΈλμμ μ μμνμ§ μλλ€.
- μλΉμ€ κ³μΈ΅μμ @Transeactionalλ‘ νΈλμμ μ μμν λ 1λ²μμ 미리 μμ±ν΄λ μμμ± μ»¨ν μ€νΈλ₯Ό μ°Ύμμμ νΈλμμ μ μμνλ€.
- μλΉμ€ κ³μΈ΅μ΄ λλλ©΄ νΈλμμ μ 컀λ°νκ³ μμμ± μ»¨ν μ€νΈλ₯Ό νλ¬μνλ€. μ΄ μμ μ νΈλμμ μ λλ΄μ§λ§ μμμ± μ»¨ν μ€νΈλ μ’ λ£λμ§ μλλ€.
- 컨νΈλ‘€λ¬μ λ·°κΉμ§ μμμ± μ»¨ν μ€νΈκ° μ μ§λλ―λ‘ μ‘°νν μν°ν°λ μμ μνλ₯Ό μ μ§νλ€.
- μλΈλ¦Ώ νν°λ, μ€νλ§ μΈν°μ ν°λ‘ μμ²μ΄ λμμ€λ©΄ μμμ± μ»¨ν μ€νΈλ₯Ό μ’ λ£νλ€.
μ¬μ§μμ λ³Ό μ μλμ μλΉμ€ κ³μΈ΅μμ νΈλμμ μ΄ λλλ©΄ 컨νΈλ‘€λ¬μ λ·°μλ νΈλμμ μ΄ μ μ§λμ§ μλ μνμ΄λ€. μν°ν°λ₯Ό λ³κ²½νμ§ μκ³ λ¨μν μ‘°νλ§ κ°λ₯νλ€.
μ΄λ λ§μ½ νλ‘μλ₯Ό λ·° λ λλ§νλ κ³Όμ μ μ΄κΈ°ν(Lazy loading)κ° μΌμ΄λκ² λμ΄λ μ‘°ν κΈ°λ₯μ΄λ―λ‘ νΈλμμ μ΄ μμ΄ μ½κΈ°κ° κ°λ₯νλ€.
νμ§λ§ νΈλμμ μ΄ λλ μμ μ΄κΈ° λλ¬Έμ μμ μ λΆκ°λ₯νλ€.
OSIV μ λ΅μ νΈλμμ μμμ²λΌ μ΅μ΄ λ°μ΄ν°λ² μ΄μ€ 컀λ₯μ μμ μμ λΆν° API μλ΅μ΄ λλ λ κΉμ§ μμμ± μ»¨ν μ€νΈμ λ°μ΄ν°λ² μ΄μ€ 컀λ₯μ μ μ μ§νλ€.
κ·Έλμ View Templateμ΄λ API 컨νΈλ‘€λ¬μμ μ§μ° λ‘λ©μ΄ κ°λ₯νλ€. μ§μ° λ‘λ©μ μμμ± μ»¨ν μ€νΈκ° μ΄μμμ΄μΌ κ°λ₯νκ³ , μμμ± μ»¨ν μ€νΈλ κΈ°λ³Έμ μΌλ‘ λ°μ΄ν°λ² μ΄μ€ 컀λ₯μ μ μ μ§νλ€. μ΄κ² μμ²΄κ° ν° μ₯μ μ΄λ€.
νμ§λ§ μ΄ μ λ΅μ λ무 μ€λμκ°λμ λ°μ΄ν°λ² μ΄μ€ 컀λ₯μ 리μμ€λ₯Ό μ¬μ©νκΈ° λλ¬Έμ, μ€μκ° νΈλν½μ΄ μ€μν μ ν리μΌμ΄μ μμλ 컀λ₯μ μ΄ λͺ¨μλ μ μλ€. μ΄κ²μ κ²°κ΅ μ₯μ λ‘ μ΄μ΄μ§λ€.
OSIVμ SSE
OSIVμ SSEλ₯Ό ν¨κ» μ¬μ©ν λ μ£Όμν΄μΌ ν μ μ΄ μλ€. SSEμ ν΅μ κ°λ μ μ΄μ κΈμμ λ€λ£¬ μ μ΄ κ°λ³κ² λμ΄κ°κ² λ€. SSEλ μλ²μμ ν΄λΌμ΄μΈνΈμμ 컀λ₯μ μ λμ§μκ³ λ¬Όκ³ μλ€κ° event λ°μ μ ν΄λΌμ΄μΈνΈλ‘ λ°μ΄ν°λ₯Ό μ£Όλ κ°λ μ΄λ€. λ΄ μ½λμμ λ¬Έμ μ μ μλ¦Όμ 보λ΄λ μλΉμ€ ν΄λμ€μ νΈλμμ μ λΆμ¬λ¨λ κ²μ΄μλ€.
ν΄λμ€ μμ±νλ©° μ무 μκ°μμ΄ λΆμλ νΈλμμ μ΄ μλ¬μ μμΈμ΄λΌκ³€ μκ°νμ§ λͺ» νλ€. μ§κΈ μκ°νλ©΄ λΉμ°νκ±΄λ° κ·Έλ μ ν μκ°νμ§ λͺ»νλ€ γ γ ..
ν€λμ subscribe λ‘μ§μ λ£μ΄λκ³ νμ΄μ§ μ΄λν λλ§λ€ subscribe μμ²μ 보λλλ° @Transactionμ΄ κ±Έλ €μμ΄ DBμμ 컀λ₯μ μ λμ§ λͺ» νλ κ² κ°λ€.
λ€λ₯Έ λΆλ€μ λ³΄ν΅ sseλ₯Ό ꡬνν λ OSIVλ₯Ό λκ³ νλ€κ³ νλ€. μΌλ°μ μΌλ‘ HTTP νΈμΆμ΄ λλκ³ DB 컀λ₯μ λ μ’ λ£λλ, SSE μ¬μ©μμλ κ°μ²΄κ° λ§λ£λκΈ° μ κΉμ§ κ³μν΄μ DB 컀λ₯μ μ΄ μ΄λ € κ³ κ°λκΈ° λλ¬Έμ΄λ€.
μΆκ°λ‘ OSIVλ₯Ό λλ©΄ λͺ¨λ μ§μ°λ‘λ©μ νΈλμμ μμμ μ²λ¦¬ν΄μΌ νλ€. νμ§λ§ λ΄κ° μ§ μ½λλ μ λΆ νΈλμμ μμμ μ§μ°λ‘λ©μ μννκΈ° λλ¬Έμ μ½κ² λ μ μμλ€.
'Spring Boot, JAVA π±' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JAVA λ©λͺ¨λ¦¬ λμ μ²΄ν¬ λ° JVM λͺ¨λν°λ§ (0) | 2023.10.12 |
---|---|
cascade.REMOVE μλ¬(feat. μμμ± μ»¨ν μ€νΈ, @Query) (1) | 2023.10.11 |
[spring batch] μ€νλ§ λ°°μΉμ μ€μΌμ€λ¬μ μ°¨μ΄ (0) | 2023.10.03 |
[spring batch] μ€νλ§ λ°°μΉ μ΄ν΄νκ³ μ μ©νκΈ° (0) | 2023.10.01 |
[Netty] λΉλκΈ° μλ² Nettyμ NoSQL MongoDBλ‘ μ±ν μλΉμ€ ꡬν (0) | 2023.09.08 |