hibernate
Relaciones de entidad de hibernación usando anotaciones
Buscar..
Parámetros
Anotación | Detalles |
---|---|
@OneToOne | Especifica una relación uno a uno con un objeto correspondiente. |
@OneToMany | Especifica un solo objeto que se asigna a muchos objetos. |
@ManyToOne | Especifica una colección de objetos que se asignan a un solo objeto. |
@Entity | Especifica un objeto que se asigna a una tabla de base de datos. |
@Table | Especifica qué tabla de base de datos se asigna también este objeto. |
@JoinColumn | Especifica en qué columna se almacena una clave foregin. |
@JoinTable | Especifica una tabla intermedia que almacena claves externas. |
Bidireccional de muchos a muchos utilizando el objeto de tabla de combinación administrada por el usuario
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany(mappedBy = "bar")
private List<FooBar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToMany(mappedBy = "foo")
private List<FooBar> foos;
}
@Entity
@Table(name="FOO_BAR")
public class FooBar {
private UUID fooBarId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
@ManyToOne
@JoinColumn(name = "barId")
private Bar bar;
//You can store other objects/fields on this table here.
}
Especifica una relación bidireccional entre muchos objetos Foo
y muchos objetos Bar
utilizando una tabla de unión intermedia que el usuario administra.
Los objetos Foo
se almacenan como filas en una tabla llamada FOO
. Los objetos Bar
se almacenan como filas en una tabla llamada BAR
. Las relaciones entre los objetos Foo
y Bar
se almacenan en una tabla llamada FOO_BAR
. Hay un objeto FooBar
como parte de la aplicación.
Se usa comúnmente cuando se desea almacenar información adicional en el objeto de unión, como la fecha en que se creó la relación.
Bidireccional Muchos a muchos usando la tabla de unión administrada de Hibernate
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="fooId"),
inverseJoinColumns = @JoinColumn(name="barId"))
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="barId"),
inverseJoinColumns = @JoinColumn(name="fooId"))
private List<Foo> foos;
}
Especifica una relación entre muchos objetos Foo
y muchos objetos Bar
utilizando una tabla de unión intermedia que Hibernate administra.
Los objetos Foo
se almacenan como filas en una tabla llamada FOO
. Los objetos Bar
se almacenan como filas en una tabla llamada BAR
. Las relaciones entre los objetos Foo
y Bar
se almacenan en una tabla llamada FOO_BAR
. Sin embargo, esto implica que no hay ningún objeto FooBar
como parte de la aplicación.
Relación bidireccional de uno a muchos mediante mapeo de clave externa
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany(mappedBy = "bar")
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
}
Especifica una relación bidireccional entre un objeto Foo
y muchos objetos Bar
utilizando una clave externa.
Los objetos Foo
se almacenan como filas en una tabla llamada FOO
. Los objetos Bar
se almacenan como filas en una tabla llamada BAR
. La clave externa se almacena en la tabla BAR
en una columna llamada fooId
.
Relación bidireccional uno a uno gestionada por Foo.class
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "barId")
private Bar bar;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToOne(mappedBy = "bar")
private Foo foo;
}
Especifica una relación bidireccional entre un objeto Foo
y un objeto Bar
utilizando una clave externa.
Los objetos Foo
se almacenan como filas en una tabla llamada FOO
. Los objetos Bar
se almacenan como filas en una tabla llamada BAR
. La clave externa se almacena en la tabla FOO
en una columna llamada barId
.
Tenga en cuenta que el valor mappedBy
es el nombre del campo en el objeto, no el nombre de la columna.
Relación unidireccional de uno a muchos mediante la tabla de unión administrada por el usuario
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="fooId"),
inverseJoinColumns = @JoinColumn(name="barId", unique=true))
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
//No Mapping specified here.
}
@Entity
@Table(name="FOO_BAR")
public class FooBar {
private UUID fooBarId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
@ManyToOne
@JoinColumn(name = "barId", unique = true)
private Bar bar;
//You can store other objects/fields on this table here.
}
Especifica una relación unidireccional entre un objeto Foo
y muchos objetos Bar
utilizando una tabla de unión intermedia que el usuario administra.
Esto es similar a una relación ManyToMany
, pero si agrega una restricción unique
a la clave externa de destino, puede imponer que es OneToMany
.
Los objetos Foo
se almacenan como filas en una tabla llamada FOO
. Los objetos Bar
se almacenan como filas en una tabla llamada BAR
. Las relaciones entre los objetos Foo
y Bar
se almacenan en una tabla llamada FOO_BAR
. Hay un objeto FooBar
como parte de la aplicación.
Tenga en cuenta que no existe una asignación de objetos Bar
objetos Foo
. Bar
objetos de Bar
se pueden manipular libremente sin afectar los objetos de Foo
.
Muy comúnmente usado con Spring Security cuando se configura un objeto de User
que tiene una lista de Role
que pueden realizar. Puede agregar y quitar roles a un usuario sin tener que preocuparse por las cascadas de eliminación de Role
's.
Relación unidireccional uno a uno
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToOne
private Bar bar;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
//No corresponding mapping to Foo.class
}
Especifica una relación unidireccional entre un objeto Foo
y un objeto Bar
.
Los objetos Foo
se almacenan como filas en una tabla llamada FOO
. Los objetos Bar
se almacenan como filas en una tabla llamada BAR
.
Tenga en cuenta que no existe una asignación de objetos Bar
objetos Foo
. Bar
objetos de Bar
se pueden manipular libremente sin afectar los objetos de Foo
.