[Resolvido]Como criar um DAO que satisfaça a necessidade de uma herança?

4 respostas
J

Galera, seguinte, estou implementando um projeto na faculdade onde possuo duas classes, Cliente e Administrador, que são filhas de Usuario. Logo, para persistir os dados destas classes no banco de dados, optamos por utilizar apenas uma classe, ou seja, UsuarioDAO. Esta classe será responsável por persistir os dados nas três tabelas, Cliente, Administrador e Usuario. Estou com dificuldade de implementar um readByCriteria nesta classe, pois, “imagino eu”, que será necessário saber o tipo do usuario que realizou a requisição do readByCriteria para que eu possa alterar o SQL e instanciar um objeto do tipo da classe que realizou a requisição.

Alguém teria alguma dica?

Obs.: sou bem inexperiente em Java, portanto me desculpem se estou “imaginando” as coisas de um modo bem diferente ao modo correto.

4 Respostas

CWeiler

Se você estiver utilizando JPA (hibernate), como indica ou seu “readByCriteria”, e o mapeamento já prevê a herança, isso será automático para você, nenhuma ação adicional é necessária.

pfk66

Banco de dados relacional não lida com objetos e herança, apenas relacionamentos. O que você está perguntando na verdade é como mapear objetos para o modelo relacional. A resposta para essa pergunta é “depende da sua camada ORM”.

Obs.: sou bem inexperiente em Java, portanto me desculpem se estou “imaginando” as coisas de um modo bem diferente ao modo correto.

O modo correto é não ter que fazer mapeamento entre modelos incompatíveis, mas como você é iniciante vamos dar um desconto, quando está começando é normal ficar perdendo tempo com camadas e camadas de complexidade que não levam a lugar nenhum.

Daniel_Dias

Ola @Joao6 , eu tenho um modelo de DAO nesse link , vê se é o que procura.

https://github.com/Daniel-Dos/Livraria-XPTO-Sistema-de-Reservas-de-Livros-On-Line/tree/master/src/persistencia

{ },s.

J

Primeiramente agradeço às pessoas que responderam, algumas respostas me ajudaram para que eu pudesse atingir o objetivo. A solução implementada foi passar um critério de busca ao readByCriteria, sendo assim, dependendo do critério, sendo ele Administrador ou Cliente, o método irá concatenar a string, que contém o SQL de busca no banco, fazendo um join em uma das duas outras tabelas, que é respectiva ao critério.

Criado 25 de agosto de 2016
Ultima resposta 29 de ago. de 2016
Respostas 4
Participantes 4