Dúvidas sobre CRUD

Tenho algumas dúvidas sobre este padrão. Quais as vangagens e desvantagens de se usar? Outra dúvida seria a seguinte: Tenho uma classe DAO que me retorna todos os registros de uma tabela e na minha classe de negócios faço a filtragem de acordo com a situação. Estou agindo corretamente? Ou devo fazer este filtro na própria DAO e consequentemente no banco?

Agradeço desde já…

Acho que você cometeu um pequeno engano. CRUD é apenas algo que cria, busca, altera e deleta. É o acrôniomo de Create, Retrieve, Update e Delete e independe de metodologia, tecnologia e etc.
http://pt.wikipedia.org/wiki/CRUD

Quanto a sua dúvida da busca, seria impossível te dar uma reposta sem mais informações, como volume de dados, tecnologia que está usando e etc.

A minha dúvida é a seguinte: Tenho uma lista de funcionários. Preciso filtrá-los por um tipo de funcionário específico. Minha FuncionarioDAO lista todos os funcionários e tenho um banco com mais ou menos 100.000 registros. Minha classe de negócios (FuncionarioBLL) filtra e me trás somente o tipo de funcionário que quero, por exemplo 100 registros de funcionários do tipo ou cargo Professor. É a forma correta? Ou posso filtrar com um “where” na minha FuncionarioDAO e passar para a FuncionarioBLL somente os 100 registros e trabalhar com eles?

Certamente você deve fazer isto no banco de dados, pois nada justificaria você filtrar isto em sua regra de negócios.

Eu nao entendi bem como a sua classe de negócio filtra esses registros. Mas se for algo do tipo, DAO me retorna todos os funcionarios e na classe de negocio eu percorro esses 100.000 registros pra ver quais são do tipo ‘professor’, então certamente está errado. voce sempre tem que pensar no que vai ser enviado para o banco de dados, e nesse caso DAO vai enviar um ‘select * from funcionario’, o que é uma péssima idéia em termos de performance. Se for esse o caso, o DAO deveria ter um método findByProfissao(String profissao).

Valeu pessoal. Acho que isto me esclareceram algumas coisas.

Porém, as dúvidas continuam…rs.
Esta é nova. É o seguinte, não sei se isto se aplica a este tópico. Em minha regra de negócios passo parâmetros de duas formas. Ou passo o valor ou o objeto. Explico: Em minha Classe de negócio FuncionárioBLL tem um método ListarFuncionário e passo o código do funcionário para que meu método retorne. Assim, tenho a seguinte dúvida: FuncionarioBLL.ListarFuncionario(codigo) ou FuncionarioBLL.ListarFuncionario(Funcionario). Qual o correto?