1. 程式人生 > >Java實現DDD中UnitOfWork

Java實現DDD中UnitOfWork

# Java實現DDD中UnitOfWork --- ### 背景 *Maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems. Unit of Work --Martin Fowler* *Unit Of Work模式,由馬丁大叔提出,是一種資料訪問模式。UOW模式的作用是在業務用例的操作中跟蹤物件的所有更改(增加、刪除和更新),並將所有更改的物件儲存在其維護的列表中。在業務用例的終點,通過事務,**一次性提交所有更改**,以確保資料的完整性和有效性。總而言之,UOW協調這些物件的持久化及併發問題。* ### Uow的本質 1. UOW跟蹤變化 2. UOW維護了一個變更列表 3. UOW將跟蹤到的已變更的物件儲存到變更列表中 4. UOW藉助事務一次性提交變更列表中的所有更改 5. UOW處理併發 對於以上這些點,在C#的EF框架中,DBContext已經實現。 而這裡主要描述如何用java實現以上要點。 ### Repository * 將倉儲Repo作為聚合的範型類 * 在Repo中維護一個聚合與聚合狀態的集合 * 在Repo中每次add/update/delete等操作時,將操作的聚合物件,和其最終狀態存入集合中 * 在Repo中的retrieve方法,將聚合檢索出來並存入Repo的集合中 * 程式碼如下: ```java public class Reposi