Relația de tip One-to-Many / Many-to-One este cea mai des întâlnită asociere între tabele în bazele de date relaționale (de exemplu: o comandă conține mai multe linii de comandă; un utilizator deține mai multe articole).
Regula de aur în performanța JPA este utilizarea explicită a fetch = FetchType.LAZY pe relațiile @ManyToOne, prevenind interogările inutile automate de tip N+1. Partea deținătoare a cheii externe (Foreign Key) folosește adnotarea @JoinColumn.
Exemplu: Relație bidirecțională sigură între Autor și Cărți
package ro.dexblog.demo.model;
import jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "author", cascade = CascadeType.ALL, orphanRemoval = true)
private List books = new ArrayList<>();
}
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "author_id", nullable = false)
private Author author;
}
Întrebări & Exemple de Cod:
@OneToMany și @ManyToOne în Spring Data JPAAi o nelămurire despre utilizarea comenzii
@OneToMany și @ManyToOne în Spring Data JPAsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.