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 .





