Zum Inhalt springen

JPA: Beziehungen

In JPA können Beziehungen zwischen Entitäten erstellt werden, um die Beziehungen in der Datenbank abzubilden. Es gibt verschiedene Arten von Beziehungen, die durch entsprechende Annotationen definiert werden.

  • @OneToOne: Diese Annotation beschreibt eine 1:1-Beziehung zwischen zwei Entitäten. Jede Entität ist mit genau einer anderen Entität der anderen Klasse verknüpft.

  • @OneToMany: Diese Annotation beschreibt eine 1:n-Beziehung zwischen zwei Entitäten. Eine Entität kann mit mehreren Entitäten der anderen Klasse verknüpft sein.

  • @ManyToOne: Diese Annotation beschreibt eine n:1-Beziehung zwischen zwei Entitäten. Mehrere Entitäten können mit einer Entität der anderen Klasse verknüpft sein.

  • @ManyToMany: Diese Annotation beschreibt eine m:n-Beziehung zwischen zwei Entitäten. Mehrere Entitäten können mit mehreren Entitäten der anderen Klasse verknüpft sein.

In diesem Beispiel wird eine OneToMany-Beziehung zwischen einer Person und Car-Entität erstellt.

@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
// ...
@OneToMany(mappedBy = "owner")
private List<Car> cars;
// Getter und Setter
// ...
}
@Entity
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
// ...
@ManyToOne
@JoinColumn(name = "owner_id")
private Person owner;
// Getter und Setter
// ...
}

In diesem Beispiel hat eine Person mehrere Car-Objekte und jedes Auto hat genau einen Person-Besitzer. Die OneToMany-Beziehung ist in der Person-Entität definiert, während die ManyToOne-Beziehung in der Car-Entität definiert ist. Die mappedBy-Eigenschaft in der OneToMany-Annotation gibt an, welches Attribut in der Car-Entität die ManyToOne-Beziehung repräsentiert. Die @JoinColumn-Annotation in der Car-Entität gibt an, wie die beiden Entitäten in der Datenbank verknüpft sind.