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.
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
[quote=fabioEM]Caros,
Qual a real necessidade dos Daos no Hibernate? Nao seria suficiente uma classe generica para todas as entidades com as funcoes basicas?
[quote=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
[/quote]
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.
[quote=marcosalex][quote=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
[/quote]
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.
[/quote]
[quote=marcosalex][quote=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
[/quote]
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.
[/quote]
Aqui também se usa este tipo de implementação e gosto da justificativa dada pelo leonardobhbr
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.