24 Mayıs 2018 Perşembe

Jaskson @JsonBackReference Anotasyonu

Giriş
Birbirleri ile çift taraflı (unidirectional) ilişkisi olan sınıflarda kullanılır. Infinite Recursion problemini çözer. Açıklaması şöyle
For avoiding the problem, linkage is handled such that the property annotated with @JsonManagedReference annotation is handled normally (serialized normally, no special handling for deserialization) and the property annotated with @JsonBackReference annotation is not serialized; and during deserialization, its value is set to instance that has the "managed" (forward) link.
Şöyle düşünmek daha kolayıma geliyor. OneToMay ilişki olsun. 
One tarafına @JsonManagedReference yazılır. Many tarafına ise @JsonBackReference yazılır.

Örnek
Şöyle yaparız.
private class Player {
  public int id;
  @JsonManagedReference
  public Info info;
}

private class Info {
  public int id;
  @JsonBackReference
  public Player parentPlayer;
}

2 yorum:

  1. Hocam elinize saglik.
    Player icindeki info nesnesi collection olmayacak mi?

    YanıtlaSil
  2. Aslında unidirectional herhangi bir ilişkide bu anotasyon kullanılabilir. Örnekte OneToOne ilişki var. Ben hatırlaması kolay olsun diye OneToMany gibi düşünüyorum :)

    YanıtlaSil