hibernate
Slaapstandrelaties met annotaties
Zoeken…
parameters
aantekening | Details |
---|---|
@OneToOne | Specificeert een één-op-één relatie met een overeenkomstig object. |
@OneToMany | Hiermee geeft u één object op dat aan veel objecten wordt toegewezen. |
@ManyToOne | Hiermee geeft u een verzameling objecten op die worden toegewezen aan één object. |
@Entity | Geeft een object op dat wordt toegewezen aan een databasetabel. |
@Table | Geeft aan welke databasetabel dit object ook toewijst. |
@JoinColumn | Hiermee geeft u op in welke kolom een sleutel voor het opslaan is opgeslagen. |
@JoinTable | Hiermee geeft u een tussentabel op waarin externe sleutels worden opgeslagen. |
Bidirectioneel veel tot veel met door de gebruiker beheerd join-tabelobject
@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.
}
Hiermee geeft u een tweerichtingsrelatie op tussen veel Foo
objecten en veel Bar
objecten met behulp van een tussentijdse join-tabel die de gebruiker beheert.
De Foo
objecten worden opgeslagen als rijen in een tabel met de naam FOO
. De objecten Bar
worden als rijen opgeslagen in een tabel met de naam BAR
. De relaties tussen Foo
en Bar
objecten worden opgeslagen in een tabel met de naam FOO_BAR
. Er is een FooBar
object als onderdeel van de toepassing.
Wordt meestal gebruikt wanneer u extra informatie over het join-object wilt opslaan, zoals de datum waarop de relatie is gemaakt.
Bidirectionele veel tot veel met behulp van Hibernate beheerde join-tabel
@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;
}
Specificeert een relatie tussen veel Foo
objecten en veel Bar
objecten met behulp van een tussentijdse join-tabel die Hibernate beheert.
De Foo
objecten worden opgeslagen als rijen in een tabel met de naam FOO
. De objecten Bar
worden als rijen opgeslagen in een tabel met de naam BAR
. De relaties tussen Foo
en Bar
objecten worden opgeslagen in een tabel met de naam FOO_BAR
. Dit betekent echter dat er geen FooBar
object is als onderdeel van de toepassing.
Bidirectionele één-op-veel-relatie met behulp van externe sleuteltoewijzing
@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;
}
Hiermee geeft u een tweerichtingsrelatie op tussen één Foo
object en veel Bar
objecten met een externe sleutel.
De Foo
objecten worden opgeslagen als rijen in een tabel met de naam FOO
. De objecten Bar
worden als rijen opgeslagen in een tabel met de naam BAR
. De externe sleutel wordt opgeslagen in de BAR
tabel in een kolom met de naam fooId
.
Bi-directionele één op één relatie beheerd door 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;
}
Hiermee geeft u een tweerichtingsrelatie op tussen een Foo
object en een Bar
object met een externe sleutel.
De Foo
objecten worden opgeslagen als rijen in een tabel met de naam FOO
. De objecten Bar
worden als rijen opgeslagen in een tabel met de naam BAR
. De externe sleutel wordt opgeslagen in de FOO
tabel in een kolom met de naam barId
.
Merk op dat de waarde mappedBy
de veldnaam van het object is, niet de kolomnaam.
Uni-directionele One to Many-relatie met door de gebruiker beheerde join-tabel
@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.
}
Hiermee geeft u een eenrichtingsrelatie op tussen één Foo
object en veel Bar
objecten met een tussentijdse join-tabel die de gebruiker beheert.
Dit is vergelijkbaar met een ManyToMany
relatie, maar als u een unique
beperking toevoegt aan de externe doelcode, kunt u afdwingen dat deze OneToMany
.
De Foo
objecten worden opgeslagen als rijen in een tabel met de naam FOO
. De objecten Bar
worden als rijen opgeslagen in een tabel met de naam BAR
. De relaties tussen Foo
en Bar
objecten worden opgeslagen in een tabel met de naam FOO_BAR
. Er is een FooBar
object als onderdeel van de toepassing.
Merk op dat er geen Bar
objecten worden toegewezen aan Foo
objecten. Bar
objecten kunnen vrij worden gemanipuleerd zonder Foo
objecten te beïnvloeden.
Zeer vaak gebruikt met Spring Security bij het instellen van een User
met een lijst met Role
die ze kunnen uitvoeren. U kunt rollen toevoegen en verwijderen voor een gebruiker zonder dat u zich zorgen hoeft te maken dat cascades Role
verwijderen.
Unidirectionele één-op-één-relatie
@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
}
Hiermee geeft u een eenrichtingsrelatie op tussen één Foo
object en één Bar
object.
De Foo
objecten worden opgeslagen als rijen in een tabel met de naam FOO
. De objecten Bar
worden als rijen opgeslagen in een tabel met de naam BAR
.
Merk op dat er geen Bar
objecten worden toegewezen aan Foo
objecten. Bar
objecten kunnen vrij worden gemanipuleerd zonder Foo
objecten te beïnvloeden.