Cascade Types Ve Fetch Types

Merhaba arkadaşlar, bu yazımda sizlere hibernate de ilişki çeşitlerinden bahsedeceğim. Cascade nedir? Çeşitleri nelerdir? Ve fetch tipleri ile ilgili Sorulara cevap vereceğim.

Cascade nedir?

Cascade, bir JPA standardıdır. Entity sınıflarımızdaki ilişkilerin hareketlerini yani davranışlarını cascade tipleri ile ayarlarız. Yani ilişkili sınıfların birbirlerinden etkilenip etkilenmemesini sağlıyor. Örnek olarak bir değer sildiğimizde o silinen veri ilişkili olan verilerin etkilenmesini ya da etkilenmemesini sağlarız. Bu JPA standartı, veritabanımıza bulaşmadan kolaylıkla Java sınıflarımız üzerinden işlemleri yönetmemizi sağlar.

Cascade tipleri nelerdir?

TİP Görevi
Persist Nesne persist edilirse ilişkili nesnelerde persist edilir
All Tüm işlemleri ilişkili nesnelerle birlikte yapar
Merge Nesne merge edilirse ilişkili nesnelerde merge edilir
Remove Nesne remove edilirse ilişkili nesnelerde remove edilir
Refresh Nesne refresh edilirse ilişkili nesnelerde refresh edilir

 

Nullable => False değerini alırsa o sütun null olamaz(Not Null).

Fetch Type Nedir?

Aralarında ilişki bulunan Entity sınıflarından bir tarafın yüklenme durumunda diğer tarafın yüklenme stratejisini belirlememizi sağlar. Hibernate de 2 adet fetch type vardır. Bunlar:

1-)Eager(Ön Yükleme)

2-)Lazy(Tembel/Sonradan Yükleme)

Eğer @OneToOne ve @ManyToOne ilişkileri kullanıyorsak FetchType olarak Eager kullanmamız daha doğru olur. Yani bir tane Entity nesnesi üzerinden ilişki kurulduğundan ön yükleme yapmak performans açısından sorun oluşturmaz.

Eğer ki @OneToMany ve @ManyToMany ilişki kullanıyorsak FetchType olarak Lazy kullanmamız daha doğru olur. Yani birden fazla ilişkili nesne olduğundan ön yükleme yapmamız performans açısından kayba neden olur. Bunun için ihtiyaç duyulduğunda yüklemek daha doğru olur.

Print Friendly, PDF & Email

“Cascade Types Ve Fetch Types” için 2 yorum

  1. bir soru soracaktım. Cascade belirtilmezse varsayılan olarak hangi işlemleri gerçekleştirir(Persist,All, Merge, Remove, Refresh ? )

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.