Repository ve Unit Of Work Tasarım Kalıbı ve Uygulanması

Repository ve Unit Of Work Tasarım Kalıbı ve Uygulanması

25 Nisan 2020 0 Yazar: Ertan Eryılmaz

Repository temel olarak veritabanı sorgulama işlemlerinin bir merkezden yapılmasını sağlayarak iş katmanına bu işlerin taşınmasını önler bu şekilde sorgu ve kod tekrarına engel olmuş olur.

Yani asıl amaç veri işlem ve sorgulamaların tekrarlardan kaçınılarak merkezi bir yapıya çekilmesidir.

Bu sayede veritabanı işlemlerimizi tekrar ve tekrar iş katmanı içinde yazmak durumununda kalmaktan uzak dururuz.

Repository tasarım kalıbının ilk ve en önemli amacı budur, bunun yanında yukarıdaki tanıma ek olarak repository tasarım kalıbı,

programınızda asıl işi yapan bölümler ile veriye erişen bölümlerin birbirinden soyutlanması mantığını da getirmiştir.

Yani veri katmanı ve bu katmanı kullanan iş katmanı arasında bir arabirim olarak yer alır ve bu iki katman arasında soyutlama görevi de üstlenir.

Repository tasarım kalıbı ile ilgili yazılan her yazıda olduğu gibi Martin Fowler’den özlü sözler köşesi olmazsa olmazdır.

Martin Fowler repository tanımı için der ki:

“Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.”

“Conceptually, a Repository encapsulates the set of objects persisted in a data store and the operations performed over them, providing a more object-oriented view of the persistence layer.

Repository also supports the objective of achieving a clean separation and one-way dependency between the domain and data mapping layers.”

Unit Of Work Tasarım Kalıbı (Unit Of Work Design Pattern)

Bir transaction tarafından etkilenen nesnelerin listesini tutar ve değişikliklerin yazılması ile eşzamanlılık sorunlarının çözümünü koordine eder.

Martin Fowler der ki:

“Maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems.”

“A Unit of Work keeps track of everything you do during a business transaction that can affect the database. When you’re done, it figures out everything that needs to be done to alter the database as a result of your work.”