Typeorm - gksrlfw/study GitHub Wiki

typeorm

Transaction

typeorm-transactional-cls-hooked νŒ¨ν‚€μ§€

typeorm μ—μ„œ μ œκ³΅ν•˜λŠ” νŠΈλžœμž­μ…˜μ€ propagation 을 μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 타 service 의 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄ νŠΈλžœμž­μ…˜μ΄ μ›ν•˜λŠ”λŒ€λ‘œ λ™μž‘ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

https://github.com/odavid/typeorm-transactional-cls-hooked 을 μ΄μš©ν•˜λ©΄ νŠΈλžœμž­μ…˜μ„ μ „νŒŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μœ„ νŒ¨ν‚€μ§€λŠ” cls-hooked λ₯Ό μ΄μš©ν•©λ‹ˆλ‹€. cls-hooked λŠ” ν˜„μž¬ experimental κΈ°λŠ₯으둜 ν”„λ‘œλ•μ…˜μ—μ„œ 사μš©ν•  수 μžˆμ„μ§€ ν…ŒμŠ€νŠΈν•΄λ΄μ•Ό ν•©λ‹ˆλ‹€. (μ„±λŠ₯ μ΄μŠˆκ°€ μžˆλŠ”κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. https://github.com/bmeurer/async-hooks-performance-impact)

db connection ν•˜λ‚˜λ‘œ μœ μ§€: https://kay0426.tistory.com/60

Test

typeorm-test-transactions νŒ¨ν‚€μ§€

typeorm μ—μ„œλŠ” ν…ŒμŠ€νŠΈμš©μœΌλ‘œ 둀백을 μœ„ν•œ κΈ°λŠ₯을 μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ‹€μ œλ‘œ save, delete ν•˜λ©΄μ„œ disk 에 μ“°κ³  μ§€μš°κ±°λ‚˜ transaction 을 μ΄μš©ν•˜μ—¬ λ‘€λ°±ν•΄μ•Ό ν•©λ‹ˆλ‹€.

https://www.npmjs.com/package/typeorm-test-transactions 을 μ΄μš©ν•˜λ©΄ μˆ˜λ™μœΌλ‘œ 데이터λ₯Ό μ§€μš°κ±°λ‚˜ transaction 을 생성할 ν•„μš”μ—†μ΄ λ‘€λ°±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‚΄λΆ€μ μœΌλ‘œ typeorm-transactional-cls-hooked 의 @transactional 을 μ‚¬μš©ν•˜κ³  μžˆμ§€λ§Œ ν…ŒμŠ€νŠΈ ν™˜κ²½μ΄λ―€λ‘œ μ‚¬μš©ν•΄λ„ λ κ²ƒκ°™μŠ΅λ‹ˆλ‹€.

μœ„ νŒ¨ν‚€μ§€μ—μ„œ runInTransaction ν•¨μˆ˜λŠ” connection name 을 λ°›μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. runInMultiConnectionTransaction 은 connection name 배열을 λ°›μ§€λ§Œ λ™μž‘ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. (Why..?)

connection name 을 받을 수 μžˆλ„λ‘ patch-package 둜 μˆ˜μ •ν•˜μ—¬ μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€.

private member

https://github.com/typeorm/typeorm/issues/3548