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;
}
Code language: PHP (php)
Yukarıda verilen örnek karşılaşabilecek hatalarımızı önlemektedir.
No Comment! Be the first one.