June 2017
Intermediate to advanced
394 pages
8h 52m
English
Transactions are an implementation detail related to the persistence mechanism. The Domain layer shouldn't be aware of this low-level implementation detail. Thinking about beginning, committing, or rolling back a transaction at this level is a big smell. This level of detail belongs to the Infrastructure layer.
The best way of handling transactions is to not handle them at all. We could wrap our Application Services with a Decorator implementation for handling the transaction session automatically.
We've implemented a solution to this problem in one of our repositories, and you can check it out here:
interface TransactionalSession{ /** * @return mixed */ public function executeAtomically(callable $operation);}
This contract ...
Read now
Unlock full access