hibernate
Hibernate Entity Relationships med hjälp av kommentarer
Sök…
parametrar
Anteckning | detaljer |
---|---|
@OneToOne | Anger ett förhållande till ett med ett motsvarande objekt. |
@OneToMany | Anger ett enda objekt som kartlägger till många objekt. |
@ManyToOne | Anger en samling objekt som kartläggs till ett enda objekt. |
@Entity | Anger ett objekt som kartläggs till en databastabell. |
@Table | Anger vilken databastabell detta objekt också kartar. |
@JoinColumn | Anger vilken kolumn en föregående nyckel lagras i. |
@JoinTable | Anger en mellanliggande tabell som lagrar utländska nycklar. |
Två-riktning Många till många med hjälp av användarhanterade gå med tabellobjekt
@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.
}
Anger ett tvåvägsförhållande mellan många Foo
objekt till många Bar
objekt med en mellanliggande sammanfogningstabell som användaren hanterar.
Foo
objekt lagras som rader i en tabell som heter FOO
. De Bar
objekten lagras som rader i en tabell som heter BAR
. Förhållandena mellan Foo
och Bar
objekt lagras i en tabell som heter FOO_BAR
. Det finns ett FooBar
objekt som en del av applikationen.
Vanligtvis används när du vill lagra extra information om kopplingsobjektet, t.ex. det datum då förhållandet skapades.
Två-riktning Många till många som använder Hibernate hanterade sammanfogningstabell
@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;
}
Anger en relation mellan många Foo
objekt till många Bar
objekt med hjälp av en mellanliggande sammanfogningstabell som Hibernate hanterar.
Foo
objekt lagras som rader i en tabell som heter FOO
. De Bar
objekten lagras som rader i en tabell som heter BAR
. Förhållandena mellan Foo
och Bar
objekt lagras i en tabell som heter FOO_BAR
. Men det innebär att det inte finns något FooBar
objekt som en del av applikationen.
Två-riktad relation mellan ett och många med hjälp av utländsk nyckelkartläggning
@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;
}
Anger ett tvåvägsförhållande mellan ett Foo
objekt till många Bar
objekt med hjälp av en främmande nyckel.
Foo
objekt lagras som rader i en tabell som heter FOO
. De Bar
objekten lagras som rader i en tabell som heter BAR
. Den utländska nyckeln lagras på BAR
bordet i en kolumn som heter fooId
.
Dubbelriktad en-till-relation som hanteras av 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;
}
Anger ett tvåvägsförhållande mellan ett Foo
objekt till ett Bar
objekt med hjälp av en främmande nyckel.
Foo
objekt lagras som rader i en tabell som heter FOO
. De Bar
objekten lagras som rader i en tabell som heter BAR
. Den främmande nyckeln lagras på FOO
tabellen i en kolumn som heter barId
.
Observera att värdet mappedBy
är fältnamnet på objektet, inte kolumnnamnet.
Uni-Directional One to Many Relationship med användarhanterad sammanfogningstabell
@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.
}
Anger ett enkelriktat förhållande mellan ett Foo
objekt till många Bar
objekt med hjälp av en mellanliggande sammanfogningstabell som användaren hanterar.
Detta liknar ett ManyToMany
förhållande, men om du lägger till en unique
begränsning till den utländska målnyckeln kan du säkerställa att det är OneToMany
.
Foo
objekt lagras som rader i en tabell som heter FOO
. De Bar
objekten lagras som rader i en tabell som heter BAR
. Förhållandena mellan Foo
och Bar
objekt lagras i en tabell som heter FOO_BAR
. Det finns ett FooBar
objekt som en del av applikationen.
Observera att det inte finns någon kartläggning av Bar
objekt tillbaka till Foo
objekt. Bar
objekt kan manipuleras fritt utan att påverka Foo
objekt.
Mycket vanligt med Spring Security när du ställer in en User
objekt som har en lista med Role
'är att de kan utföra. Du kan lägga till och ta bort roller till en användare utan att behöva oroa dig för att kaskader raderar Role
.
Envägsriktad en-till-relation
@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
}
Anger en enkelriktad relation mellan ett Foo
objekt till ett Bar
objekt.
Foo
objekt lagras som rader i en tabell som heter FOO
. De Bar
objekten lagras som rader i en tabell som heter BAR
.
Observera att det inte finns någon kartläggning av Bar
objekt tillbaka till Foo
objekt. Bar
objekt kan manipuleras fritt utan att påverka Foo
objekt.