Odak modu

Java Spring

Tablo İlişkilerinde Fetch Türleri

Bahsedilen konu, Hibernate framework'ü içindeki ilişki yüklemeleri üzerine bir problemi ele alıyor. Bu problem, genellikle performansla ilgilidir ve ilişkili verileri yüklememiz gerekip gerekmediği konusunda ortaya çıkar.

Öncelikle, bir "product" nesnesini alıyoruz. Bu nesnenin içinde, ilişkili olduğu diğer nesneler (örneğin, "category", "supplier" gibi) da bulunabilir. Ancak, sadece "product" nesnesinin belirli özelliklerine ihtiyaç duyuyoruz ve bu özelliklerin yüklenmesini istiyoruz.

Hibernate, varsayılan olarak ilişkili nesneleri tembel (lazy) yükler. Bu, ilişkili verilere ihtiyaç duyulduğunda yüklenmeleri anlamına gelir. Ancak, her zaman bu verilere ihtiyaç duyulmayabilir ve her defasında ilişkili nesnelerin yüklenmesi performans sorunlarına yol açabilir.

Bu problemi çözmek için Hibernate'de "fetch" stratejilerini kullanabiliriz. İki temel fetch stratejisi bulunmaktadır: "eager" (tembel olmayan) ve "lazy" (tembel). "Eager" stratejisi, ilişkili nesnelerin her zaman yüklenmesini sağlar, "lazy" stratejisi ise yalnızca ihtiyaç duyulduğunda yüklenmelerini sağlar.

Ayrıca, FetchType ile FetchType.EAGER ve FetchType.LAZY gibi özellikleri kullanarak bu stratejileri belirleyebiliriz. Eğer her zaman ilişkili nesneleri kullanacaksak "eager", her zaman kullanılmayacaksa "lazy" kullanmak daha performanslı olacaktır.

Ayrıca, FetchType.EAGER varsayılan olarak gelir. Ancak, her ihtimale karşı FetchType.LAZY olarak belirterek sadece ihtiyaç duyulduğunda yüklenmesini sağlayabiliriz.

Bu şekilde, Hibernate'ın ilişkili verileri nasıl yüklediğini kontrol edebilir ve performans sorunlarını minimize edebiliriz. Bu yaklaşım, uygulamanın ihtiyaçlarına bağlı olarak optimize edilebilir ve gereksiz yüklemelerden kaçınarak performans artırılabilir. Bir sonraki bölümde görüşmek üzere.

Background Pattern
Birlikte öğrenelim

Sektörde en çok aranan yazılım becerilerini kazan

Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.

Yunus Emre Kabakcı

Patika+ mezunu

Patika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,

3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!


“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!