Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

Sorunuz mu var? Belki de çoktan soruldu..

0
Db operasyonlarındaki Static kullanımı

Açık 1 Cevaplar 19 Gösterim Java
Merhaba

Static ifadesini genelde nerelerde kullanmak faydalıdır?

Örneğin Database operation'ları yöneten bir class da uygulamak (örneğin bir id vererek select den bir satır döndürme) uygun olur mu?

Karşılaştığım bir konu da database operations içeren classta içerisinde(metodlarda) select ifadesini çekerken connection aç ve kapa da mevcut. Metod static olunca connection'ı da static yapmamızı istiyor yoksa kızıyor. connection'ın static olması 2 thread olduğunda bozulmalara neden olabilir. Bu gibi durumlar genel anlamdaki projelerde nasıl handle ediliyor?

Teşekkürler.

1 cevap

0

Static kullanımı nerelerde faydalı olur sorusu güzel bir soru olmuş yes

Java'da herşeyi static yaparsak java'yı C gibi kullanmış oluruz derdik biz eskiden. Peki hatalı bir davranış mı? Tabiki hayır. Static insanlar kullansınlar diye var :) Her ölçüden biraz makul kalabilmek lazım.

Bu soruya kesin doğru olacak bir cevap vermek sanıyorum çok kolay değil. OOP destekleyen (zorunlu koşan) dillerde sanıyorum static kullanımı en acı veren konulardan birisi, hemen heryerde bir sorun yaşama ihtimali var. Benim şimdiye kadar edindiğim tecrübe ile nerelerde kullanılabileceğini biraz açıklayayım.

  1. Herhangi bir global/sınıf bazında değişkene erişimi bulunmayan yerlerde, en azından başına bela almak istemiyorsan (en önemli tanım bu sanıyorum)
  2. Utility diye isimlendirilen yardımcı sınıflarda (burda da dikkat etmen gereken global değişkene erişim olmamalı)
  3. Yazdığın metod herhangi bir sınıfı yaratmadan bile kullanılacaksa,

En önemli soru; ilk soru. Mesela sen db işlemleri üzerinden sormuşsun. Db işlemlerini yaparken herhangi bir şekilde db connectiona ihtiyaç duyacaksın, bu connection nesnesini nerede tutacaksın? Static bir değişkende mi? Sorunların başlangıç noktalarından birisi. Static kullanma demiyorum ama her seferinde db connection açıp kapatacaksan ve bu açıp kapatmayı bir pool üzerinden alacaksan miss, çok güzel seçenek. Ama ben açarım connectionu atarım bir değişkene sonra kullanır kullanır dururum diyorsan sıkıntı. Sen kullanırken bir başka kullanıcı girer de kapatırsa ne olacak? Static olduğu için herkes tarafından kullanılıyor olacak. Bir dönemler sürekli yaşadığımız bir sorun. Düzelt düzelt bitmiyor.

Daha farklı bir tabirle; yazdığın metodun kullandığı değişkenler metodun hayatından uzunsa sıkıntı yaşaman çok muhtemel. Kullandığın değişkenler de o metodun hayatından kısa olursa sıkıntı yok, static yazmaya devam edebilirsin.

İyi çalışmalar.

5 Eylül 2017 kenan (2,833 puan) cevapladı
...