Odak modu
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.
Yazılım Kariyerinde İlerlemeni Hızlandıracak Programlar
Patika+ programlarımız ile 4-8 aylık yoğun yazılım kamplarına katıl, temel bilgilerden başlayarak kapsamlı bilgiler edin, yazılım kariyerine başla!
Yorum yapabilmek için derse kayıt olmalısın!