LINUX.ORG.RU

Как фильтровать DTO?

 ,


0

1

Возьму за основу такую модель и сервис:

public interface Project {
    String getName();
    Customer getCustomer();
    Employee getManager();
    ProjectStatus getStatus();
}

public interface ProjectService {
    List<Project> getProjects();
    List<Project> getProjects(Customer customer);
    List<Project> getProjects(Employee manager);
}

Как только Project начнёт обрастать дополнительными атрибутами, появится необходимость фильтровать и сортировать список проектов по разным критериям. Но описывать вручную все возможные комбинацию (особенно с учётом and и or) мне кажется нецелесообразным.

Есть ли какие-то готовые проекты типа hibernate-jpamodelgen и JpaSpecification, но заточенные именно на DTO?

★★

Можно сделать объект с полями для фильтрации, по этому объекту троить Criteria, ее кормить jpa. Я в своих проетах делал именно так.

matroskin ()
Ответ на: комментарий от matroskin

Но это придется выносить Entity / JPA в API.

Я сейчас делаю следующим образом: создаю отдельный пакет с Entity и генерирую JPA метамодель, этот пакет используют все клиенты и, как раз, отправляют в условный ProjectService Criteria для фильтрации сортировки.

Мне не нравится такой подход тем, что нельзя просто подменить реализацию Entity и Service (например, запросить Project не из БД, а из сторонней системы).

SaBo ★★ ()
Ответ на: комментарий от matroskin

А, сори, я не правильно понял ответ :)

У меня как раз вопрос в том, что объект с полями для фильтрации очень муторно строить вручную - очень много лишней писанины.

Мой вопрос в том, есть ли уже какой-то готовый инструмент, типа JPA Spec, но не завязанный на JPA, для генерации такого объекта фильтрации

SaBo ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.