Java

JsonBackReference, ve JsonManagedReference Many to Many, Many to One İlişkisi (Infinite Recursion , StackOverflowError Hatası Çözümü)

Projelerimizde Jackson kütüphanesi oldukça sık kullanılır ve olmazsa olmazımız ORM kütüphanelerimiz.

Veritabanı alanlarımız içerisinde yazdığımız OneToMany , Many To One ilişkilerimizdeki alanlarımızın Jackson kütüphanesinde serileştirilmesi sırasında ilşikisel alanlarımız birbirini çağırır ve sonsuz döngüye girer.

Bu sonsuz döngü sorunu farklı hatalar doğurur Jackson hataya düşmektedir. Jackson, Json oluşturmaya çalışırken bu ilişki yapısından dolayı sonsuz döngüye girmesini engellememiz gerekmektedir.

Kullanmamız gereken iki adet anotasyon bulunmaktadır.Aşağıda açıkladığım anotasyonlar çift yönlü Json oluşturmaya olanak sağladığı gibi sorunu da ortadan kaldırmaktadır.

@JsonManagedReference ve @JsonBackReference anotasyonları, çift yönlü bir şekilde JSON yapısı oluşturmak için kullanılabilir.

JsonManagedReference


Sınıf ilişkisinde üst sınıf bölümünün serileştirme işlemini yönetmektedir. Bu anotasyonla işaretlenen alanlar serileştirilir.

JsonBackReference


Sınıf ilişkisinde alt sınıf bölümünün serileştirme işlemini yönetir. Bu anotasyonla işaretlenen alanlar serileştirilir.

Örnek


public class Person {
    public int id;
    public String name;

    @JsonBackReference
    public List<Product> productList; 
} 

public class Product{
    public int id;
    public String productName;

    @JsonManagedReference
    public Person person; 
 }

Yukarıda verilen örnek karşılaşabilecek hatalarımızı önlemektedir.

DAHA FAZLASI:Java

İlgini Çekebilir

YORUM YAP

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir