Repository Deseni Nedir?

İngilizce: Repository Pattern

Repository deseni, veri kaynağı ayrıntılarını iş mantığından saklayarak uygulamanın veriye tutarlı arayüzlerle erişmesini sağlar.

Repository Deseni Nedir?

Repository deseni, uygulamanın veri okuma ve yazma işlemlerini ayrı bir katmanda toplar. İş mantığı doğrudan SQL sorgusu, ORM detayı veya harici API cevabı ile uğraşmak yerine UserRepository, OrderRepository gibi arayüzlerle çalışır.

Bu yaklaşım verinin nerede tutulduğunu gizler. Bugün PostgreSQL’den okunan bir kayıt yarın farklı bir servis veya cache katmanından gelebilir; uygulamanın üst katmanları bu değişikliği bilmek zorunda kalmaz.

Nasıl Çalışır?

Repository genellikle domain veya servis katmanı ile veri kaynağı arasında durur:

  1. Servis katmanı “müşteriyi bul” veya “siparişi kaydet” gibi niyet belirten metodu çağırır.
  2. Repository, gerekli sorguyu veya API isteğini üretir.
  3. Ham veri uygulamanın kullandığı modele dönüştürülür.
  4. Hata, transaction ve bağlantı ayrıntıları tek yerde yönetilir.

MVC kullanan uygulamalarda controller’ın doğrudan veritabanı sorgusu yazması yerine repository üzerinden çalışması, controller’ı daha ince tutar.

Ne Zaman Kullanılır?

Repository deseni, veri erişim kuralları karmaşıklaştığında, testlerde sahte veri kaynağı kullanmak istendiğinde veya aynı veriye birden fazla yerden erişildiğinde yararlıdır. Finans, stok, sipariş ve müşteri hesapları gibi tutarlılık isteyen alanlarda kodun niyetini görünür kılar.

Her küçük CRUD ekranı için ayrı repository yazmak ise gereksiz soyutlama yaratabilir. Bu tasarım deseni, gerçek veri erişim karmaşıklığını sadeleştirdiğinde değerlidir.