DAO bir design pattern olarak biliyordum, başka bir arkadaş da MVC dedi.
Bu nedir tam olarak açıklayabilir misiniz?
DAO bir design pattern olarak biliyordum, başka bir arkadaş da MVC dedi.
Bu nedir tam olarak açıklayabilir misiniz?
// Comments are closed.
DAO ile MVC’nin ne alakası varmış pek anlamadım.
Aradaki bağlantıyla alakalı ne kast ettiğinizi de belirtirseniz güzel olur.
Onun haricinde DAO bir tasarım desenidir.
DAO – Data Access Object – Veri Erişim Objesi.
Asıl amaç; uygulamanın herhangi bir kayıt mekanizması varsa, business katmanı ile kayıt işleminin yapıldığı yere (veri tabanı olabilir, başka kayıt mekanizması olabilir) ara bir katman oluşturmaktır.
Daha açık bir örnek üzerinden gidelim.
Mesela üyelik sistemi yazman lazım. Basit bir login işlemi içinde bir verilerin veri tabanından çekilmesi ve farz edelim ki daha sonra izlemek veya kontrol etmek amaçlı bir de audit tablosuna kayıt atması gerekiyor.
Bu durumda ilk işlem kullanici tablosuna bir sorgu atmak. Eğer şifre doğruysa audit tablosuna kayıt atmak. Business katmanı olmadan yazdığın bir kodda nasıl bir işlem olabilir bakalım. Pseudo kod olarak yazıyorum.
Benzeri bir kod yazacağız. Burada db bağlantısı alma, login için sorgu atma, audit için kayıt atma hepsi bir arada yazılı. Bunları araya bir katmak koyup da sınıflara bölelim.
Şeklinde yazabiliriz. Burada yapmak istediğimiz şey kullanıcı tablosuyla ilgilenen işleri KullanıcıDAO‘ya audit ile yapılması gereken işlemleri de AuditDAO toplamak. Ama sınırları unutmamak lazım. DAO katmanı içinde business bulundurmaz. Sadece temel işlemleri yapar. Yani kullanıcının sorgu işlemi içine audit işlemlerini de koyabiliriz. Kod olarak bakarsak ilk yazılan da iş görür. Amaç; mantıksal ayrımı mümkün olduğunca belirgin yapmak. Her DAO kendi tablosuyla alakalı çalışsın.
Tekrar hatırlatmakda fayda görüyorum. Design pattern (tasarım deseni) dediğimiz konu daha önceki tecrübeler sonucu çıkan faydalı bilgiler. Yani neden bu kadar detaya giriyorum diye de düşünebilirsin. Amaç; gün geçtikçe büyüyen kod tabanını mümkün olduğunca anlaşılır bırakmak. Burada da DB’ye indirdiğin işlemleri sınıflara parçalayıp kolay yönetebilmek.
teşekkürler çok güzel açıklamışsınız