Design Pattern para Criteria do Hibernate

Olá!

Eu tenho uma tabela no Banco chamada usuario e outra chamanda usuariosupervisor, sendo que a segunda liga os usuarios do sistema ao seu supervisor; Com isso em mãos, eu utilizo o hibernate para filtrar diversas pesquisas em meu sistema para trazer registros apenas dos supervisores, ou então, trazer registros apenas dos usuarios que são supervisionados por determinado supervisor, onde eu busco utilizando a clausula in do Criteria, como a seguir:

DetachedCriteria dc = DetachedCriteria.forClass("UsuarioSupervisor.class");
dc.setProjection(Property.forName("usuarioSupervisor"));

Criteria qry = session.createCriteria(Operacao.class, "op");
qry.add(Property.forName("op.usuario").in(dc));
return qry.list();

Acontece que essa DetachedCriteria que traz somente os supervisores é utilizada em muitos locais do sistema. Caso houver uma alteraçao nessa busca, terei que ir em cada lugar realizando a alteração; Então eu pensei em criar algo do tipo:

class UsuarioSupervisorCriterias {

   public DetachedCriteria buscaSupervisores() {
       DetachedCriteria dc = DetachedCriteria.forClass("UsuarioSupervisor.class");
       dc.setProjection(Property.forName("usuarioSupervisor"));
       return dc;
   }
	 
   public DetachedCriteria buscaSupervisionados(Usuario supervisor) {
       DetachedCriteria dc = DetachedCriteria.forClass("UsuarioSupervisor.class");
       dc.add(Property.forName("usuarioSupervisor").eq(supervisor));
       dc.setProjection(Property.forName("usuario"));
       return dc;
   }
}

Pergunta: É uma boa prática criar uma classe que conteria uma coleção de DetachedCriteria relacionadas com a Tabela (algo parecido com o DAO)? Existe algum padrão de projeto que visa solucionar esse problema?

Obrigado!

Não é uma má idéia. E sua lógica vai estar centralizada ai. Assim para alterações futuras só é mudar alterar esse método.