[quote=pcalcado][quote=carol_programadora]
Nos no meu “UserRepository” eu tenho algo mais relacionado ao negócio, suponhamos que eu precise de encontrar “Todos usuários com salário > 5.000, que tenham Casa própria quitada, que não tenha filhos, seja solteiro etc etc”(considere que seja uma consulta bem complexa) e lá na interface repository eu terei este método "findUsersBemDeVida();
Até ai ok, pois representa algo bem espefíco, mas agora se eu estiver usando este modelo:
UsuarioRepository > UsuarioDecorator(implements UsuarioRepository) > UsuarioDao
[/quote]
Não entendi, por que você está usando essa hierarquia toda? Que tal uma interface RepositorioUsuarios que é implementada por um UsuárioDAO, uma coisa simples que funciona?
Na implementação do Repositório, o DAO na minha proposta acima.
[/quote]
Entendi, sua proposta é tirar essa hierarquia. OK.
Mas pensei nessa estrutura apenas pelo detalhe abaixo:
Se nas minhas classes de controller, quando eu preciso de alguma consulta direta, sem ter negócio envolvido, inclua aqui dados brutos para popular comboBox, DataTable… etc eu tinha pensando em injetar uma dependência “UsuarioDao” no meu “UsuarioController” e não um UsuarioRepository… achei que fosse errado colocar uma dependência do repository no controller, achei que elas deveriam ser usada APENAS por classes do domínio, por domínio quero dizer as entities e os services, então eu pensei que o controller não deveria ter esse contato.
Então creio que estou errada, utilizando sua sugestão Shoes, minha única opção pra inserir dentro do “UsuarioController” seria minha "UsuarioRepository.
Shoes, explorando-te um pouco mais :roll: , vendo o projeto ddd-sample, eu vi algo que me deixou confusa:
La está divido assim:
Application
Domain
Interface
Infrastructure
Dentro de Application e Domain, tem pacote “service”, pelo que li e entendi até agora(a não ser que fiz bagunça) minhas regras de negócio devem ficar no Domain > Service, certo?!
Fiquei confusa com essa camada “Application”, não tinha visto sobre ela no DDD, e na verdade pouco conheço ainda dela no geral(é tanta coisa pra estudar :? falta tempo…), mas pesquisando achei essa definição , que menciona na camada de aplicação serviços EJB, JMS… Agora confundi tudo sobre essa application, JMS e EJB não é infra? O certo não seria ela estar na camada de infrastructure, assim o Dao que acessa o banco, eu teria esses serviços de infra? Ou não? Totalmente confusa agora.
Se puder esclarecer o que vai exatamente nessa camada “Application”.
Obrigada pela ajuda.
[quote=A.L]
Corrija se eu estiver errado, mas no projeto exemplo do site oficial (dddsample) , existe um exemplo dessa situaçao, onde a interface do repositorio fica na camada de domínio, e a implementação, no caso em Hibernate, fica na camada de infra-estrutura/persistencia.[/quote]
Pois é, olhando esse projeto me veio algumas dúvidas a mais. :roll: