@OneToMany și @ManyToOne în Spring Data JPA în Spring Boot

data Spring Boot 3.x / Jakarta Persistence Q&A / Distribuie cod

Modelarea relațiilor 1-la-N între entități: strategii de încărcare leneșă (FetchType.LAZY), operațiuni în cascadă și chei externe (Foreign Keys).

Sintaxă
@ManyToOne(fetch = FetchType.LAZY) / @OneToMany(mappedBy = "...")

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;
}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: @OneToMany și @ManyToOne în Spring Data JPA

Ai o nelămurire despre utilizarea comenzii @OneToMany și @ManyToOne în Spring Data JPA sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.