Saltar al contenido

¿Cuándo debo usar @JoinColumn o @JoinTable con JPA?

Este team redactor ha pasado mucho tiempo investigando para dar resolución a tu búsqueda, te ofrecemos la resolución por esto esperamos serte de mucha apoyo.

Solución:

Digamos que tienes una entidad A que tiene un @ManyToOne asociación o entidad B

@JoinColumn definirá la clave externa de la tabla de destino (p. ej. B_ID) mientras se utiliza la tabla de entidades de destino (p. ej. B).

@Entity
public class A 

    private Long id;

    @ManyToOne
    @JoinColumn(name="B_ID")
    private B b;


@JoinTable usará una tabla separada para mantener la relación entre A y B.

@Entity
public class A 

    private Long id;

    @ManyToOne
    @JoinTable(
       name = "A_B", 
       joinColumns = @JoinColumn(name = "B_ID"), 
       inverseJoinColumns = @JoinColumn(name = "A_ID")
    )
    private B b;


Esta vez tampoco A ni B contener ninguna clave externa, porque hay una tabla separada (por ejemplo, A_B) para mantener la asociación entre A y B.

@JoinTable almacena la identificación de ambas tablas en una tabla separada, mientras que @JoinColumn almacena la identificación de la otra tabla en una nueva columna.

@JoinTable: este es el tipo predeterminado. Use esto cuando necesite una base de datos más normalizada. es decir. para reducir la redundancia.

@JoinColumn: use esto para un mejor rendimiento, ya que no necesita unirse a una tabla adicional.

una diferencia importante: @JoinColumn siempre depende del contexto en que se use:

  • Si la unión es para un mapeo OneToOne o ManyToOne utilizando un key estrategia de mapeo, el extranjero key columna está en la tabla de
    entidad fuente o integrable.
  • Si la unión es para un mapeo OneToMany unidireccional usando un key estrategia de mapeo, el extranjero key está en la tabla de la entidad de destino.
  • Si la unión es para un mapeo ManyToMany o para un mapeo OneToOne o ManyToOne/OneToMany bidireccional usando una tabla de unión, el
    extranjero key está en una tabla de unión.
  • Si la unión es para una colección de elementos, el foráneo key está en una mesa de colección.

Nos puedes añadir valor a nuestro contenido informacional tributando tu experiencia en las ilustraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *