Boa tarde a todos. Estou construindo um sistema na seguinte forma: tenho as classes Pessoa, PessoaFisica, PessoaJuridica, Aluno, Fornecedor.
Aluno herda de PessoaFisica e esta herda de Pessoa. Fornecedor herda de PessoaJuridica e esta herda de Pessoa.
Ao construir o banco de dados utilizei os ids para relacionar tabelas com herança (PessoaFisica contém um id para Pessoa, por exemplo) e a partir daí surgiu meu problema. Ao construir as classes DAO para o aluno, por exemplo, alguns métodos de seleção de dados ficaram repetidos.
Por exemplo, uma Pessoa possui um nome, eu posso fazer o select via nome. Um aluno não possui um nome diretamente na tabela, mas ele faz referencia a uma PessoaFisica e esta faz referencia a uma Pessoa, logo um aluno possui um nome devido a herança. Devido a isso, minha classe PessoaDAO possui um método de busca pelo nome e minha classe AlunoDAO também possui um método de busca pelo nome, sendo que estes métodos possuem um script sql diferente associado.
Script Pessoa
select * from pessoa where nome like ?'%' order by nome
Script Aluno
select * from pessoa where nome like ?'%' inner join pessoaFisica where pessoaFisica.idPessoa = pessoa.idPessoa inner join aluno where aluno.idPessoaFisica = pessoaFisica.idPessoaFisica order by nome
A minha dúvida é se isso está correto ou se estou cometendo algum erro conceitual em relação a herança ou algo assim.