saveλ λ μ½λλ₯Ό μ μ₯νκ±°λ μμ νλ λ©μλμ
λλ€. UpsertBuilderλ₯Ό μ¬μ©νμ¬ INSERT/UPDATEλ₯Ό μλμΌλ‘ μ²λ¦¬νλ©°, νΈλμμ
λ΄μμ μμ νκ² μ€νλ©λλ€.
saveλ BaseModelClassμ μ μλμ΄ μμ§ μμ΅λλ€. Entityλ₯Ό μμ±νλ©΄ Syncerκ° κ° Model ν΄λμ€μ
μλμΌλ‘ μμ±νλ νμ€ ν¨ν΄μ
λλ€.νμ μκ·Έλμ²
μλ μμ± μ½λ
Sonamuλ Entityλ₯Ό κΈ°λ°μΌλ‘ λ€μ μ½λλ₯Ό μλμΌλ‘ μμ±ν©λλ€:- getPuri(βwβ): BaseModelClass λ©μλλ‘ μ°κΈ°μ© Puri νλ
- ubRegister(): UpsertBuilderμ λ μ½λ λ±λ‘
- transaction(): νΈλμμ μμ
- ubUpsert(): INSERT/UPDATE μλ μ²λ¦¬ λ° ID λ°ν
λ§€κ°λ³μ
saveParams
μ μ₯ν λ μ½λ λ°μ΄ν° λ°°μ΄μ λλ€. νμ :SaveParams[]
idμ μν
- idκ° μμΌλ©΄: ν΄λΉ IDμ λ μ½λλ₯Ό UPDATE
- idκ° μμΌλ©΄: μ λ μ½λλ₯Ό INSERT
λ°νκ°
νμ :Promise<number[]>
μ μ₯λ λ μ½λμ ID λ°°μ΄μ λ°νν©λλ€.
κΈ°λ³Έ μ¬μ©λ²
μ λ μ½λ μμ± (INSERT)
λ μ½λ μμ (UPDATE)
Upsert (INSERT or UPDATE)
UpsertBuilder λμ μ리
1. λ μ½λ λ±λ‘ (ubRegister)
2. νΈλμμ μ€ν
3. INSERT/UPDATE μλ μ²λ¦¬
UpsertBuilderλid νλμ μ 무μ λ°λΌ μλμΌλ‘ INSERT λλ UPDATEλ₯Ό μνν©λλ€:
λ°°μΉ μ μ₯
μ¬λ¬ λ μ½λλ₯Ό ν λ²μ μ μ₯ν μ μμ΅λλ€.κ΄κ³ λ°μ΄ν° μ μ₯
1:N κ΄κ³
N:M κ΄κ³
μ€μ μμ
- νμκ°μ
- νλ‘ν μμ
- κ²μλ¬Ό μμ±
- μ£Όλ¬Έ μμ±
λΆλΆ μ λ°μ΄νΈ
μ§μ ν νλλ§ μ λ°μ΄νΈν μ μμ΅λλ€.μ§μ νμ§ μμ νλλ λ³κ²½λμ§ μμ΅λλ€. NULLλ‘ μ€μ νλ €λ©΄ λͺ
μμ μΌλ‘
nullμ μ λ¬νμΈμ.νΈλμμ
saveλ μλμΌλ‘ νΈλμμ
λ΄μμ μ€νλ©λλ€.
@transactionalκ³Ό ν¨κ»
κ²μ¦
1. Zod μλ κ²μ¦
SaveParamsλ Entity μ μμμ Zod μ€ν€λ§λ‘ μλ μμ±λ©λλ€.2. 컀μ€ν κ²μ¦
APIμμ μ¬μ©
μλ μμ±λ save API
ν΄λΌμ΄μΈνΈ μ½λ
React (TanStack Query)
κ³ κΈ κΈ°λ₯
Unique μ μ½μ‘°κ±΄ μ²λ¦¬
UpsertBuilderλ Unique μ μ½μ‘°κ±΄μ μλμΌλ‘ μ²λ¦¬ν©λλ€.JSON 컬λΌ
λ°°μ΄ μ»¬λΌ (PostgreSQL)
μ±λ₯ μ΅μ ν
λ°°μΉ ν¬κΈ° μ ν
νΈλμμ μ¬μ¬μ©
μ£Όμμ¬ν
1. λ°°μ΄λ‘ μ λ¬
saveλ λ°λμ λ°°μ΄μ λ°μ΅λλ€.
2. λ°νκ°μ ID λ°°μ΄
3. λΆλΆ μ λ°μ΄νΈ μ μ£Όμ
4. κ΄κ³ λ°μ΄ν° μμ
λΆλͺ¨ λ μ½λλ₯Ό λ¨Όμ μ μ₯ν ν μμ λ μ½λλ₯Ό μ μ₯νμΈμ.λ€μ λ¨κ³
findById
μ μ₯λ λ μ½λ μ‘°ννκΈ°
del
λ μ½λ μμ νκΈ°
UpsertBuilder
UpsertBuilder μμΈ κ°μ΄λ
@transactional
νΈλμμ
μ¬μ©νκΈ°