多くのビジネス ロジックを含むプロジェクトで、DDDとDoctrine2を効果的に使用しようとしています。
システムに関連する他の概念からドメイン オブジェクトを分離する必要があることを理解しています。
しかし、私には理解しがたいことが 1 つあります。Doctrine 2 を使用した DDD のいくつかのコード例では、ドメイン エンティティの集約は Doctrine ArrayCollectionで管理されています。この種のコードを見つけました。
namespace Acme\Domain\Model\Users;
use Doctrine\Common\Collections\ArrayCollection;
class User {
//...
/**
* Collection of Roles
*
* @var Collection of Roles
*/
protected $roles;
/**
* Constructor.
*/
public function __construct()
{
$this->createdAt = new \DateTime();
$this->roles = new ArrayCollection();
}
public function getRoles()
{
return $this->roles;
}
//...
}
私にとって、この実装はドメイン モデルと永続化サービスDoctrine2 の間の高い結合を作成します。
一方、DDD Entity と Doctrine Entity クラスが分離されている場合、私の意見では、多くのレイヤー/クラスが存在します。
どう思いますか?これを回避/処理するより良い方法はありますか?