https://github.com/Aliheym/typeorm-transactional



스프링 쓰는 사람들은 메서드 위에 어노테이션 달아서 트랜잭션으로 묶는 게 자연스럽겠지만


놀랍게도 노드 진영의 대표적인 orm인 typeorm은 그런 방법을 공식적으로 지원하지 않는다.

(예전 버전엔 비슷한 게 있었떤 거 같은데 deprecated 되었음)


그래서 저렇게 누가 따로 만든 라이브러리를 많이 쓰는 것 같은데 저걸 쓰면 어노테이션처럼 메서드 데코레이터를 써서


@Transactional()

function example(){}


이렇게 간단히 힌 트랜잭션으로 묶는 게 가능해진다.... 근데 그걸 어케 했나 궁금해서 예전에 찾아봤거든?


typeorm의 리파지토리, 쿼리빌더 등의 함수들을 걍 몽키패칭해서 그 함수들이 실행될때 트랜잭션을 생성하고


그 트랜잭션을 비동기 컨텍스트 안에 담아서 물고 빨고 하는거더라.


근데 mongoDB도 4.0부턴가 여러 컬렉션에 걸친 작업을 한 트랜잭션으로 묶는 게 지원이 되어서


mongoose의 경우엔 session을 넘기면서 session.startTransaction() <== 이런 식으로 트랜잭션 시작, 롤백, 커밋 하게끔 되어있음


그럼 똑같이 session을 컨텍스트에 바인드 시켜서 typeorm-transactional과 비슷하게 동작하는 라이브러리가 분명 있을텐데


대충 찾아보긴 했지만 없는 것 같다. 없을 이유가 있나??? 몽고는 트랜잭션 쓰는 게 안티패턴인가??


여기 99퍼가 대기업도 못가서 빌빌거리는 새끼들인 건 알지만


혹시라도 이 글을 보는 누군가가 제말 mongoose-transactional" 같은 라이브러리좀 만들어줘라


내가 만들고 싶은데 난 달에 외주 2~3개씩 치면서 돈버느라 시간이 없음