Mapeamento O/R Hibernate (interessante)

1 resposta
glauber_rochab

Olá amigos,

porque o hibernate faz o mapeamento O/R do objeto com o registro através de uma associação entre o “id” do registro com o “id” existente na classe. Todo mundo sabe que o “id” no registro o identifica perante os demais, tudo bem, mas na classe ele não representa nada, ou seja, ele além de ser desnecessário à classe ainda não representa nada na abstração O.O.

Por exemplo, na abstração OO de uma aeronave, para um sistema de controle de aeronaves. Um avião tem tamanho, # de passageiros, cor, etc., mas não tem “id”, ou seja, o “id” foi inserido neste meio por conta da tecnologia. Eu poderia colocar o # chassi (sei lah se avião tem isso, hehe) como chave primária? Sim poderia, mas o problema é o seguinte: se um dia, alguém disser que dois aviões podem ter # de chassis iguais? Parece loucura, talvez seja, mas nós sabemos que isso pode um dia acontecer. CPF hoje identifica apenas uma pessoa, mas um dia ele já foi do marido e da esposa.

Desta forma, as atuais literaturas de banco de dados sugerem que a PK venha a ser um campo que não tenha nada a ver com a entidade. Mas aih eh outro assunto… outra viagem mais longa…

Mas a dúvida foi a seguinte: um framework de persistêcia têm que realizar o mapeamento O/R relacionando o OID do objeto à PK ou FK do registo nas tabelas, sendo assim desnecessário a presença do “id” na classe, que não representa nada para o objeto e muito menos para o avião - como dito anteriormente. Contudo o “id” continua existente na tabela, mas a associação é feita entre o “OID” do objeto instanciado e o PK do registro no banco.

Obrigado a todos.

1 Resposta

Paulo_Silveira

esse seu OID teria varios problemas como o ID do aviao…

Onde guardar o OID? Num Map enorme Entidade->OID? Como se referenciar ao objeto, por exemplo, pela web? Que url voce acessaria?

Mas voce tem razao, IDs sao feios e nao-OO.

Criado 21 de outubro de 2006
Ultima resposta 21 de out. de 2006
Respostas 1
Participantes 2