sábado, 21 de febrero de 2009

Cuando y donde va el inverse=true?

Supongamos una relacion 1..* bidireccional Person->Address, es decir que una persona tiene uno a N direcciones.
Esto implica que Person es el padre, y Address el hijo.

En el mundo de los objetos esto sería : la clase Person que tiene un método "Set
getAddresses()" y la clase Address que tiene un método "Person getPerson()".

Si lo pensamos en el mundo relacional Person sería PERSON[ id, name, ...] y Address sería ADDRESS[ id, person_id, city, street,...].
O sea que Address es el dueño de la relación... y Person es el lado inverso.
Es decir que "inverse=true" significa "este es el lado inverso" y "inverse=false" significa "este no es el lado inverso, es el dueño de la relación".

Otra forma de ver esto podría ser volviendo a PERSON[ id, name, ...] y ADDRESS[ id, person_id, city, street,...], en la que se observa que la columna person_id de la tabla Address es la informacion relacional entre las dos tablas. O sea que Address es el dueño de la relación, y Person es el lado inverso, como se dijo antes.

1 comentario:

  1. Tu transcripción está algo mal, mejor vean el original.
    Saludos
    http://tadtech.blogspot.com/2007/02/hibernate-when-is-inversetrue-and-when.html

    ResponderEliminar