Как построить бизнес-объект с помощью весеннего репозитория? - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь работать с пружинным CrudRepository. В моей текущей реализации этот репозиторий не хранит сам бизнес-объект, с которым я хочу работать в приложении. Но хранятся только определенные c детали, необходимые для восстановления моего бизнес-объекта. После завершения восстановления эти данные больше не нужны. По крайней мере, ни одним другим классом в рамках проекта. Вот почему я хочу избежать передачи ненужных данных по всему проекту.

Теперь предположим, что моя модель выглядит примерно так:

interface Car {
    // This is my business object I want to work with
}


@Entity
class CarParts {
    // This data is stored in the DB and required to re-construct the business object.
    PartA a;
    PartA b;
    Long id;
}


interface CarFactory {
    Car createCar(CarParts parts);
}

Как видите, CarParts хранятся в слой постоянства, но это не тот объект, с которым я хочу работать. Сама машина это тот объект который мне нужен. Это можно получить с помощью фабричного класса. Теперь, очевидно, я не хочу вызывать фабрику вручную каждый раз, когда использую CrudRepository. Вместо этого я хотел бы, чтобы это произошло автоматически. Лучше всего получить экземпляр класса Car из репозитория. Нужно ли добавить еще один слой абстракции, который будет выполнять это преобразование, или, возможно, есть другое (пружинное) решение?

1 Ответ

0 голосов
/ 15 апреля 2020

В стандартной многоуровневой архитектуре уровень доступа к данным (он же уровень постоянства ) отвечает за хранение / извлечение из базы данных.

Если вы хотите, чтобы данные были в другой форме, за это отвечал бы бизнес-уровень (он же бизнес-логика c уровень он же уровень домена ), где бизнес-правила о том, как построить Car из CarParts, должно принадлежать.

Нет, это не другой слой, это часть бизнес логи c слой .

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