спящий дизайн - PullRequest
       1

спящий дизайн

0 голосов
/ 17 февраля 2011


У меня есть собственный фильтр для запросов к базе данных.
Уровень API строит фильтр, отправляет его на слой дао, а дао выполняет фильтр (filter.toCreteia()) и возвращает список результатов.

public interface IFilter {
    Creteria toCriteria();
} 

Я хочу, чтобы DAO API всегда был таким же, как для filter + securityFilter в каждом методе.

List getAll(IFilter filter, IFilter security); //each filter will be a creteria in the end

Я в конечном итоге внутри дао с 2-мя creterias: обычный фильтр и фильтр безопасности.
как я могу сделать 2 creteias для возврата одного списка результатов?Вы думаете, что я должен использовать только один фильтр и на уровне API добавить к нему контент безопасности?

1 Ответ

0 голосов
/ 17 февраля 2011

Если вы не хотите использовать подход с перехватчиками (например, иметь класс SecurityInterceptor / proxy, который прозрачно изменяет критерии), я думаю, было бы лучше разработать два отдельных фильтра.

Обратите внимание, что я не вижу возможности объединить два объекта DetachedCriteria. Хотя у вас может быть подпрограмма, которая на основе двух IFilter объектов возвращает один DetachedCriteria на основе, например. на Restrictions.and(criterion1, criterion2).

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