인터넷에는 UnitOfWork
패턴에 대한 정보가 가득합니다. SO조차 예외는 아니다.UnitOfWork는 트랜잭션과 동일합니까? 아니면 그 이상입니까?
나는 아직도 그것에 대해 뭔가를 이해하지 못합니다. 내 이해에 UnitOfWork = Transaction in DB
. 그게 다야; 아무것도 더, 아무것도 덜.
이 정보가 맞습니까?
혼란은 다른 ORM
에서 어떻게 구현 되었기 때문입니까? NHibernate
은 Transaction
이상에 대해 ISession
을 사용합니다. Dapper
당신에게 모든 것을 남겨 둡니다.
여기 내 질문은 ORM
또는 기술을 고려하지 않은 디자인 패턴에 관한 것입니다.
Transaction
이상인 경우 어떻게 설명하십시오.
편집 한
참조 this 링크 @ 데이비드 오스본 대답 제안.
작업 단위 (Unit of Work)는 데이터베이스에 영향을 줄 수있는 업무용 트랜잭션 중에 수행 한 모든 작업을 추적합니다. 작업이 완료되면 의 결과로 데이터베이스를 변경하기 위해 수행해야하는 모든 작업이 완료 될 때 이 표시됩니다.
그래서 이것은 UnitOfWork
는 DBTransaction
및 기타 의미한다. 다음
은 추가 책임의 위치 : -
는 작업이 세션에서 삭제, 변경 삽입 한 내용의 상태를 유지한다.
이 상태를 기반으로 작업이 완료되면 데이터베이스를 수정하십시오.
위의 인용문에서 명확하게 언급하지는 않았지만 쿼리 일괄 처리를 제어 할 수도 있습니다.
내 이해가 정확합니까?
당신의 유스 케이스에 의존하고 UnitOfWork (일명 CreateCustomer, MakeBooking, CreateInvoice, ...)가해야 할 일은 ... 말할 것입니다. 나는 하나의 변환으로 그런 식으로 사용할 수 있지만 Unit Of Work는 또한 하나 이상의 변환이 될 수 있습니다. 둘 이상의 경우 롤백/롤백 변환을 제어해야합니다. – Jehof