Gente eu estou com esta divisao . VO - Interace - DAO
Ok.
"eclipse_lunar":
Onde eu tenho varias VO's . Sendo que que meu dao vai dar um implements das minhas interfaces e o parametros dessas interfaces sao as minhas VO's .
Sim, acho que você quis dizer que tem mais ou menos isso:
publicinterfaceInterfaceUnica{publicvoidincluir(AlunoVO);}publicclassAlunoDAOimplementsInterfaceUnica{publicvoidincluir(AlunoVO){// toda a lógica para inserir o aluno do DB... }}
"eclipse_lunar":
Gente eu quero criar uma unica interface onde fosse usada em todos os dao independente dos VO's qe serao passados por parametro .
Ex.:
public interface InterfaceUnica {
public void incluir(") throws SQLException ;
}
Onde DAO vao implementar esta interface sendo que ele passa VO's diferentes ..
Certo. Da forma que eu fiz acima, a interface não pode ser reutilizada pois o método incluir() está acoplado ao AlunoVO.
Para desacoplar e utilizar a interface em todos os DAOs, basta fazer como eu disse:
public interface GenericDAO() {
// em vez de passar um objeto específico eu passo um Object
void incluir(Object o);
}
Agora eu posso usar essa interface para todos os DAOs:
publicclassAlunoDAOimplementsGenericDAO(){voidincluir(Objecto){// incluir toda a lógica de inserção (JDB/Hibernate)....}}
publicclassProfessorDAOimplementsGenericDAO(){voidincluir(Objecto){// incluir toda a lógica de inserção (JDB/Hibernate)....}}
E para utilizar o DAO:
AlunoDAO dao = new AlunoDAO();
dao.incluir(alunoVO);
Ficou mais claro ? :lol:
E
eclipse_lunarPJ
Pow valeu mesmo pela atenção …e fikou bem claro agora pois era isso mesmo que eu estava querendo .
So mas uma pergunta !?
Como eu faria para Esses (Object o ) identificar a Vo que eu estou passando ?
Agradeço por mas essa …
G
Guilherme_MelloPJ
“eclipse_lunar”:
Pow valeu mesmo pela atenção …e fikou bem claro agora pois era isso mesmo que eu estava querendo .
So mas uma pergunta !?
Como eu faria para Esses (Object o ) identificar a Vo que eu estou passando ?
Agradeço por mas essa …
Como assim indentificar ? explica melhor…
E
eclipse_lunarPJ
É que eu tenho varias VO’s . Com eu identificaria a vo que eu queria inserir no banco !?
J
jaireltonPJ
Se você quiser algo mais sofisticado, use Generics:
publicinterfaceDAO<E>{publicvoidinserir(Ee);publicvoidalterar(Ee);publicvoidexcluir(Ee);publicEobterPorId(intid);}publicclassProfessorDAOimplementsDAO<Professor>{publicvoidinserir(Professorp){//insere o professor}publicvoidalterar(Professorp){//altera o professor}publicvoidexcluir(Professorp){//exclui o professor}publicProfessorobterPorId(intid){//obtem o professor}}publicclassAlunoDAOimplementsDAO<Aluno>{publicvoidinserir(Alunoa){//insere o aluno}publicvoidalterar(Alunoa){//altera o aluno}publicvoidexcluir(Alunoa){//excluir o aluno}publicAlunoobterPorId(intid){//obtem o aluno}}
G
Guilherme_MelloPJ
O VO seria identificado assim:
dao.incluir(alunoVO);
Pois você saberia qual você quer inserir. Não sei se é isso que você quer.
E
eclipse_lunarPJ
Pow irmãovaleu era isso mesmo …Vcs aconselham eu fazer deste modo ?
Se nao causaria algum impacto em algo ?
G
Guilherme_MelloPJ
“eclipse_lunar”:
Pow irmãovaleu era isso mesmo …Vcs aconselham eu fazer deste modo ?
Se nao causaria algum impacto em algo ?
As duas forma são válidas. A primeira usa recursos simples, já a segunda utiliza tipos genéricos para tipificar o DAO.
Se você já utiliza os recursos do tiger, utilize a solução com tipos genéricos. Caso contrário, utilize a primeira forma.
T+
F
fabiofalciPJ
Usamos aqui na empresa a abordagem que o jairelton mostrou e funciona muito bem!!!