Я пытаюсь применить принципы DDD к приложению, созданному на основе Doctrine 2.1. а>. Чтобы абстрагироваться от деталей хранилища, я использую репозитории для своих совокупных корней с сильным контрактом с доменом. Эти репозитории скрывают все детали реализации и должны быть единственным способом хранения или извлечения агрегатов.
Мне нужно создать класс, который будет единственной точкой входа в хранилище и у которого будут только эти методы:
class X
{
public function getRepository($className) {}
public function beginTransaction() {}
public function rollback() {}
public function commit() {}
}
Единица работы имеет множество определений, и хотя некоторые считают ее просто способом абстрагировать транзакцию, другие, похоже, считают ее объектом довольно низкого уровня, знающим много деталей об объектах вашей предметной области (определение Фаулера, возможно, ближе к этому).
Итак, является ли мой class X
единицей работы или у этого шаблона есть другое название?