hibernate
Relations d'entité Hibernate à l'aide d'annotations
Recherche…
Paramètres
Annotation | Détails |
---|---|
@OneToOne | Spécifie une relation un à un avec un objet correspondant. |
@OneToMany | Spécifie un objet unique mappé sur de nombreux objets. |
@ManyToOne | Spécifie une collection d'objets mappés sur un objet unique. |
@Entity | Spécifie un objet mappé à une table de base de données. |
@Table | Spécifie la table de base de données mappée par cet objet. |
@JoinColumn | Spécifie la colonne dans laquelle une clé cédée est stockée. |
@JoinTable | Spécifie une table intermédiaire qui stocke les clés étrangères. |
Bi-directionnel plusieurs à plusieurs en utilisant l'objet table de jointure géré par l'utilisateur
@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.
}
Spécifie une relation bidirectionnelle entre de nombreux objets Foo
et de nombreux objets Bar
aide d'une table de jointure intermédiaire gérée par l'utilisateur.
Les objets Foo
sont stockés sous forme de lignes dans une table appelée FOO
. Les objets Bar
sont stockés sous forme de lignes dans une table appelée BAR
. Les relations entre les objets Foo
et Bar
sont stockées dans une table appelée FOO_BAR
. Il y a un objet FooBar
dans l'application.
Généralement utilisé lorsque vous souhaitez stocker des informations supplémentaires sur l'objet de jointure, telles que la date de création de la relation.
Bi-directionnel plusieurs à plusieurs utilisant la table de jointure gérée par 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;
}
Spécifie une relation entre de nombreux objets Foo
et de nombreux objets Bar
aide d'une table de jointure intermédiaire gérée par Hibernate.
Les objets Foo
sont stockés sous forme de lignes dans une table appelée FOO
. Les objets Bar
sont stockés sous forme de lignes dans une table appelée BAR
. Les relations entre les objets Foo
et Bar
sont stockées dans une table appelée FOO_BAR
. Cependant, cela implique qu'il n'y a pas d'objet FooBar
dans l'application.
Relation bidirectionnelle un vers plusieurs utilisant le mappage de clé étrangère
@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;
}
Spécifie une relation bidirectionnelle entre un objet Foo
et plusieurs objets Bar
aide d'une clé étrangère.
Les objets Foo
sont stockés sous forme de lignes dans une table appelée FOO
. Les objets Bar
sont stockés sous forme de lignes dans une table appelée BAR
. La clé étrangère est stockée dans la table BAR
dans une colonne appelée fooId
.
Une à une relation bi-directionnelle gérée par 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;
}
Spécifie une relation bidirectionnelle entre un objet Foo
et un objet Bar
aide d'une clé étrangère.
Les objets Foo
sont stockés sous forme de lignes dans une table appelée FOO
. Les objets Bar
sont stockés sous forme de lignes dans une table appelée BAR
. La clé étrangère est stockée dans la table FOO
dans une colonne appelée barId
.
Notez que la valeur mappedBy
est le nom du champ sur l'objet, pas le nom de la colonne.
Relation unidirectionnelle un-à-plusieurs utilisant la table de jointure gérée par l'utilisateur
@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.
}
Spécifie une relation unidirectionnelle entre un objet Foo
et plusieurs objets Bar
aide d'une table de jointure intermédiaire gérée par l'utilisateur.
Cela est similaire à une relation ManyToMany
, mais si vous ajoutez une contrainte unique
à la clé étrangère cible, vous pouvez imposer qu'il s'agit de OneToMany
.
Les objets Foo
sont stockés sous forme de lignes dans une table appelée FOO
. Les objets Bar
sont stockés sous forme de lignes dans une table appelée BAR
. Les relations entre les objets Foo
et Bar
sont stockées dans une table appelée FOO_BAR
. Il y a un objet FooBar
dans l'application.
Notez qu'il n'y a pas de correspondance entre les objets Bar
objets Foo
. Bar
objets de Bar
peuvent être manipulés librement sans affecter les objets de Foo
.
Très couramment utilisé avec la sécurité Spring lors de la configuration d'un objet User
qui possède une liste de Role
qu'il peut effectuer. Vous pouvez ajouter et supprimer des rôles à un utilisateur sans avoir à vous soucier de cascades supprimer le Role
de.
Relation unidirectionnelle un à un
@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
}
Spécifie une relation unidirectionnelle entre un objet Foo
et un objet Bar
.
Les objets Foo
sont stockés sous forme de lignes dans une table appelée FOO
. Les objets Bar
sont stockés sous forme de lignes dans une table appelée BAR
.
Notez qu'il n'y a pas de correspondance entre les objets Bar
objets Foo
. Bar
objets de Bar
peuvent être manipulés librement sans affecter les objets de Foo
.