фабричный шаблон с использованием репозитория в DDD - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть объект Project в домене, как показано ниже

public class Project implements Entity<Project> {
    private ProjectId projectId;
    private ProjectTitle projectTitle;
    private ProjectDescription projectDescription;
    private ProjectStatus projectStatus;
    private ProjectNumberOfMember projectNumberOfMember;
    private ProjectDate startDate;
    private ProjectDate endDate;
    private Owner owner;
    private ProjectLgcDelFlag lgcDelFlag;
    private Admin admin;
}

Владелец и администратор объекта получают из таблицы onwer и admin в БД.А вот Project Entity для сопоставления таблицы DB (я использую JPA)

    public class ProjectEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(name = "first_name", length = 255)
    private String title;

    @Column(name = "description")
    private String description;

    @Column(name = "number_of_member")
    private int numberOfMember;

    @Column(name = "status")
    private int status;

    @Column(name = "start_date")
    private long startDate;

    @Column(name = "end_date")
    private long endDate;

    @Column(name = "owner_id")
    private long ownerId;

    @Column(name = "lgc_del_flag")
    private int lgcDelFlag;

    @Column(name = "admin_id")
    private long adminId;

    @Column(name = "created_by")
    private long createdBy;

    @Column(name = "created_at")
    private long createdAt;

    @Column(name = "updated_by")
    private long updatedBy;

    @Column(name = "updated_at")
    private long updatedAt;
}

Я использую класс ProjectFactory для сопоставления ProjectEntity, поэтому в DDD разрешено вводить репозиторий для получения информации об Admin и Owner из БД?

1 Ответ

0 голосов
/ 24 февраля 2019

В DDD практическое правило заключается в том, что агрегат ссылается на другой по идентификатору агрегатного корневого объекта, поэтому в объекте Project домена у вас должен быть не Owner, а OwnerId.То же самое для Admin.

Так что на фабрике Project вам не нужно получать информацию от Owner или Admin, вам просто нужны их идентификаторы для построения объекта Project.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...