Spring Data JPA: Relationship
Penjelasan
Spring Data JPA mendefinisikan relasi lewat annotation di properti Entity: @OneToMany (satu record punya banyak record terkait) dipasangkan dengan @ManyToOne (kebalikannya) di Entity sisi lain, memakai mappedBy untuk menandai sisi "pemilik" relasi foreign key-nya.
Contoh Konsep
@Entity
public class Kategori {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "kategori")
private List<Produk> produk;
}
@Entity
public class Produk {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "kategori_id")
private Kategori kategori;
}
Praktikum
Buat relasi: Entity Penulis dengan @OneToMany(mappedBy = "penulis") List<Artikel> artikel, dan Entity Artikel dengan @ManyToOne @JoinColumn(name = "penulis_id") Penulis penulis.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
@ManyToOne bersifat EAGER loading secara default (langsung di-load bareng data induknya), sedangkan @OneToMany LAZY secara default (baru di-load kalau benar-benar diakses) — perilaku default yang BERBEDA ini sering jadi sumber bug LazyInitializationException kalau relasi diakses SETELAH sesi database sudah ditutup.