Seu racicínio faz sentido até o momento que você não quiser publicar, por exemplo, o método incluir de Dao de uma determinada entidade. Se ela herdar da classe genérica, você está publicando esse método no DAO e terá que reescrever este método lançando uma exceção caso alguém chame esse método (ou não fazer nada e deixar um role na regra de negócios de sua aplicação). Uma solução seria você suar composição no lugar de herança, mas que também tem seu ônus. Você também pode herdar da classe genérica e implementar a interface específica para cada entidade e só usar a interface no lugar da classe concreta.
Não vá no meu bico, mas essa é uma das possíveis respostas para a sua pergunta.
leonardobhbr
Alguns pontos para sempre usar DAO especifico para cada Tabela
[list]Provavelmente suas entidades terao select especificos tipo carregar todos clientes onde tenha feito ao menos uma compra[/list]
[list]Exclusao exemplo Entidade cliente antes de excluir tem que excluir algum registro de alguma tabela[/list]
[list]Exclusao não pode excluir[/list]
alem do q vc criando DAOS genericos eu posso criar uma classe Cachorro que nao e uma entidade e passar para excluir
DAOS especificos garante a confiabilidade do seu sistema já que ele aceitara apenas a entidade especifica, entre varios outros pontos positivos de criar o DAO especifico
R
raf4ever
fabioEM:
Caros,
Qual a real necessidade dos Daos no Hibernate? Nao seria suficiente uma classe generica para todas as entidades com as funcoes basicas?
E se vc precisar de algo mais do que o simples CRUD?
F
fabioEM
por exemplo?
R
raf4ever
Vendas entre periodo x e y
Cliente com mensalidade vencida há mais de 3 meses;
Como o DAO Genérico contemplaria isso?
M
marcosalex
leonardobhbr:
Alguns pontos para sempre usar DAO especifico para cada Tabela
[list]Provavelmente suas entidades terao select especificos tipo carregar todos clientes onde tenha feito ao menos uma compra[/list]
[list]Exclusao exemplo Entidade cliente antes de excluir tem que excluir algum registro de alguma tabela[/list]
[list]Exclusao não pode excluir[/list]
alem do q vc criando DAOS genericos eu posso criar uma classe Cachorro que nao e uma entidade e passar para excluir
DAOS especificos garante a confiabilidade do seu sistema já que ele aceitara apenas a entidade especifica, entre varios outros pontos positivos de criar o DAO especifico
Eu tenho essa dúvida também, vou explicar a forma que a empresa onde trabalho fez pra saber se foi uma abordagem boa:
implementamos um DAO genérico, o GenericDAO e somente ele tem as funções de select, insert, delete, etc.
temos um conjunto de classes BO para cada classe, essas sim com os exemplos que vocês citaram. E chamam o GenericDAO quando necessário, chamando as funções listar, listarCriteria, listarSQL, excluir, etc.
Duas empresas que trabalhei fazem essa abordagem, mas sempre tive curiosidade.
R
raf4ever
marcosalex:
leonardobhbr:
Alguns pontos para sempre usar DAO especifico para cada Tabela
[list]Provavelmente suas entidades terao select especificos tipo carregar todos clientes onde tenha feito ao menos uma compra[/list]
[list]Exclusao exemplo Entidade cliente antes de excluir tem que excluir algum registro de alguma tabela[/list]
[list]Exclusao não pode excluir[/list]
alem do q vc criando DAOS genericos eu posso criar uma classe Cachorro que nao e uma entidade e passar para excluir
DAOS especificos garante a confiabilidade do seu sistema já que ele aceitara apenas a entidade especifica, entre varios outros pontos positivos de criar o DAO especifico
Eu tenho essa dúvida também, vou explicar a forma que a empresa onde trabalho fez pra saber se foi uma abordagem boa:
implementamos um DAO genérico, o GenericDAO e somente ele tem as funções de select, insert, delete, etc.
temos um conjunto de classes BO para cada classe, essas sim com os exemplos que vocês citaram. E chamam o GenericDAO quando necessário, chamando as funções listar, listarCriteria, listarSQL, excluir, etc.
Duas empresas que trabalhei fazem essa abordagem, mas sempre tive curiosidade.
Eu gosto dessa abordagem tbm.
marcos1EM
marcosalex:
leonardobhbr:
Alguns pontos para sempre usar DAO especifico para cada Tabela
[list]Provavelmente suas entidades terao select especificos tipo carregar todos clientes onde tenha feito ao menos uma compra[/list]
[list]Exclusao exemplo Entidade cliente antes de excluir tem que excluir algum registro de alguma tabela[/list]
[list]Exclusao não pode excluir[/list]
alem do q vc criando DAOS genericos eu posso criar uma classe Cachorro que nao e uma entidade e passar para excluir
DAOS especificos garante a confiabilidade do seu sistema já que ele aceitara apenas a entidade especifica, entre varios outros pontos positivos de criar o DAO especifico
Eu tenho essa dúvida também, vou explicar a forma que a empresa onde trabalho fez pra saber se foi uma abordagem boa:
implementamos um DAO genérico, o GenericDAO e somente ele tem as funções de select, insert, delete, etc.
temos um conjunto de classes BO para cada classe, essas sim com os exemplos que vocês citaram. E chamam o GenericDAO quando necessário, chamando as funções listar, listarCriteria, listarSQL, excluir, etc.
Duas empresas que trabalhei fazem essa abordagem, mas sempre tive curiosidade.
Aqui também se usa este tipo de implementação e gosto da justificativa dada pelo leonardobhbr
johnny_quest
Hahahaha
O meu primeiro projeto em java tinha esse GenericDAO
onde cada caso de uso herdava e implementava.
Quando eu vi aquilo pela primeira vez eu não soube entender
o funcionamento, mas depois vi que aquela abordagem era muito
flexivel e funcional.
Nunca tinha visto nada sobre generics, e do nada fui lançado num
projeto lotado de classes genericas utilizando referencias de interfaces.
Bons tempos esses.