Estendeu X, é X... mas o Hibernate sabe disso?

3 respostas
Andre_JavaWorld

Ola Pessoal,

Sou programador ja a algum tempo, mas agora me deu um branco pois estou fazendo um projeto e em um certo momento tive uma duvida com relacao a meus relacionamentos... por exemplo, eu tenho uma classe pessoa, e tenho administrar e cliente que extendem pessoa, eles extendem pessoas, logicamente sao pessoas, mas a minha duvida é... eu posso criar um dao unico, que receba uma pessoa como parametro e depois realize normalmente suas operacoes? eu estou usando hibernate, entao talvez o titulo da minha duvida nao foi o mais apropriado, mas o que eu quis dizer é... tenho uma classe Pessoa que nao é uma entidade, ela apenas faz parte do modelo, e outras classes estendem dela, estas por sua vez sim, sao entidades, entao o que eu queria fazer era poder receber uma pessoa como orgumento em meu dao, e a partir dai poder fazer um
// porem o parametro pessoa, pode ser tanto um administrador, quanto cliente
session.save(pessoa);

sera que é possivel fazer isto? se for otimo, senao terei que fazer um Dao para cada entidade… “sei que posso fazer um dao Generico, mas eu particularmente nao gostei muito da solucao, ja até usei durante muito tempo, mas prefiro algo mais focado…”

Abraços Pessoal!

André de Souza

3 Respostas

Rafael_Steil

Pode, desde que voce mapeie corretamente:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Pessoa {
    @Id
    // .....
}

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Administrator extends Pessoa { .... }

Claro que nesse modelo voce tera uma tabela Pessoa e outra Administrador.

Rafael

J

Opa,

Seguinte… pessoa, administrar e cliente são entidades diferentes no banco certo? Logo você poderá fazer um HBM para cada uma das
classes. No HBM de administrar e no do cliente você irá explicitar que elas herdam de pessoa. Assim quando você for salvar, você deverá fazer:

session.save(cliente);

session.save(administrar);

Abraço.

Andre_JavaWorld

Obrigado pela Resposta Pessoal,

Ola Rafael, porem eu nao gostaria de deixar uma classe pessoa no banco, afinal ela nao vai estar fazendo nada la... pois eu nao tenho utilidade para ela, a nao ser servir de "esqueleto" para as outras

Abraços

André de Souza

Criado 5 de fevereiro de 2009
Ultima resposta 5 de fev. de 2009
Respostas 3
Participantes 3