Dao

3 respostas
S

Em uma classe DAO de um tipo posso receber um parâmetro de outro tipo ?

Ex:

Tenho um método que lista os determinados aviso, e esse método posso receber como parâmetro um usuário ?

public listaAvisosId(Usuario usuario){

// codigo

}

ou tem que receber o mesmo tipo

public listaAvisosId(Aviso aviso){

// codigo

}

3 Respostas

R

Voce que define o que retonar. Exemplo:

public Usuario listaAvisosId(Usuario usuario){

// codigo

}

Isso obrigatoriamente tem que retonar um usuario, ou null.
public Aviso listaAvisosId(Usuario usuario){

// codigo

}

Isso obrigatoriamente tem que retonar um aviso, ou null.

Agora voce pode ter um retorno de 1 tipo mas passar varios tipos como parametro, fica a seu criterio. Exemplo:

public Usuario listaAvisosId(Usuario usuario, Aviso aviso){

// codigo

}
Hebert_Coelho

Pode receber qualquer coisa, qualquer coisa mesmo.

Agora se vai ficar bem orientado a objeto é outra história.

O ideal é você começar a estudar mais OO, esse livro aqui é ótimo: Use a Cabeça - Análise e Projeto Orientado ao Objeto

sergiotaborda

santos.fernando:
Em uma classe DAO de um tipo posso receber um parâmetro de outro tipo ?

Ex:

Tenho um método que lista os determinados aviso, e esse método posso receber como parâmetro um usuário ?

public listaAvisosId(Usuario usuario){

// codigo

}

ou tem que receber o mesmo tipo

public listaAvisosId(Aviso aviso){

// codigo

}

</blockquote>

O padrão DAO encapsula como o nome indica, o acesso a dados. Em particular as pesquisas a esses dados. Um bom DAO é tipado para um único objeto e apenas pesquisa por esse objeto.
As pesquisas são os métodos. E os métodos sempre têm uma assinatura no seguinte padrão

public List<X> pesquisePorYeZ(Y y, Z z)

No nome não diz que pesquisa objectos X, por que isso é obvio sendo que o DAO em causa é para objetos X. Podemos ver isso porque o retorno é de objetos X.
y e z são os parametros da pesquisa. Que podem ser vários e mais que dois. Contudo, se forem muitos mais que 2, é preciso reconsiderar o uso do padrão Context Object, o famoso objecto Filtro.

A palavra “pesquisa” pode ser trocada por outra de significado semelhante como “encontrar” , “recupera” etc… As pessoas usam “lista” porque retorna uma lista, o que eu acho ruim semanticamente falando. Em inglês o padrão é find (encontrar)

O Spring Data tem todo um mecanismo baseado neste padrão de nomes.

Os parâmetros podem ser qualquer coisa. Desde que faça sentido para o sistema. no caso de pesquisar avisos por usuário, seria

public List<Aviso> pesquisaPorUsuario(Usuario usuario); // repare que a palavra "aviso" não entra no nome do método

Será que faz sentido pesquisar avisos usando outro aviso ? parece esquisito.

Mas seu método é “listaAvisoId” o que parece indicar que vc só está obtendo os Ids. Isto viola o conceito do DAO. Não devolva os Ids, devolve os objetos com os Ids (mesmo que os outros campos estejam vazios)
Se for mesmo obter os ids não chama de pesquisar porque não ha pesquisa envolvida do ponto de vista de OO. tipo

public Integer getIdOf(Aviso aviso);

Mas este método é muito obtuso porque seria mais simples

aviso.getId()
Criado 7 de janeiro de 2013
Ultima resposta 8 de jan. de 2013
Respostas 3
Participantes 4