Hibernate unidireccional de una a muchas asociaciones: ¿por qué es mejor una tabla de unión?

En este documento (desplácese hacia abajo a la sección Unidireccional):

http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-mapping-association-collections

dice que una asociación unidireccional de uno a muchos con una tabla de unión es muy preferible a simplemente usar una columna de clave externa en la entidad de propiedad. Mi pregunta es, ¿por qué es tan preferido?

Considere la situación en la que el tipo de entidad propiedad también puede ser propiedad de otro tipo de entidad matriz. ¿Ponen referencias de clave foránea en la tabla propia a ambas tablas padre? ¿Qué pasa si tienes tres tipos de padres? Simplemente no se adapta a diseños grandes.

Una tabla de unión desacopla la unión, de modo que la tabla de propiedad no tiene conocimiento de la (s) tabla (s) primaria (s), lo que permite que el diseño tenga una escala elegante.

Si la entidad hija solo tiene un solo tipo padre, entonces no hay necesidad de una tabla join. He hecho esto con JPA (con una impl de hibernación).

Ventajas: una tabla menos Tal vez un mejor rendimiento. No “¿para qué sirve esta mesa?” escribe preguntas.

Desventaja: desde la perspectiva de OO, se presenta una dependencia adicional entre el niño y el padre. En la práctica, esto probablemente no sea tan importante, ya que la relación es privada en el niño.

 p.ej 
 padre:
 @OneToMany (mappedBy = "parent", cascade = CascadeType.ALL)
 @MapKey (nombre = "nombre")
 niños de mapas privados;

 niño:
 @ManyToOne (opcional = falso)
 padre primario privado;
    Intereting Posts