Boa noite. Estou com uma dúvida em relação a implementação de uma associação, ou seja, temos por exemplo, uma classe Pessoa, uma associação trabalha em Projeto, uma pessoa trabalha em vários projetos, e um projeto possui varias pessoas. No banco teríamos, Pessoa(Cpf, nome ... ), Projeto( idProjeto, nome, ...), Trabalha(Cpf, idProjeto). Chaves primarias, Pessoa(Cpf), Projeto(IdProjeto), Trabalho(Cpf, idProjeto). Estrangeiras, Trabalho(Cpf, idProjeto).
Na classe Pessoa teríamos uma lista de projeto. Teríamos uma classe Dao para cada classe, com operações CRUD, a minha dúvida é na hora de recuperar do banco uma pessoa, é melhor recuperar todos os Projetos em que a pessoa participou, ou isso teria que estar no controller. Estou pensando que essa lista teria centenas, até milhares de Projetos.
Desculpem se essa dúvida é muito idiota, já procurei em muitos lugares. Obrigado.
Se for necessário apresentar essa informação sempre que pesquisar uma pessoa, então você busca, caso contrário não!
Então o método do controller que precisa da lista é quem vai criar ?
Foca na funcionalidade. O que o usuário vai precisar consultar em uma determinada situação do processo? Não importa se no banco existem trilhoes de registros armazenados, o sistema deve filtrar ou paginar direto no banco de dados as informações via SQL, conforme a demanda do usuário.
Não precisa de um modelo de classes complexo. Crie somente uma classe com estrutura que represente diretamente o resultado de um resultset via SQL, exatamente como a funcionalidade esperar.
A controĺler recebe os filtros da tela e passa pra sua classe de acesso a dados, que vai filtrar direto no banco e retornar somente as colunas e registros necessários pra uma funcionalidade específica. Evite misturar funcionalidades.
Sim, no caso um método do DAO. Obrigado pelas respostas, acredito que sanaram as minhas dúvidas.
1 curtida