İlişkisel veritabanları günümüz yazılımlarınız vazgeçilmez bir parçasıdır. Hemen hemen tüm büyük yazılımların temelinde verileri işlemek ve uygun çıktıları kullanıcıya sunmak vardır.
Yazılım geliştirme süreçlerinin hızlanmasıyla birlikte yazılım kavramları arasına ORM konusu girdi. (ORM'ler veritabanları ile kolay iletişim sağlamamıza yarayan araçlardır. Konuya başlamadan önce ORM konusunda bilginiz yoksa, "ORM Nedir?" makalesine göz atabilirsiniz)
Yazılım geliştirme süreçlerinin hızlanmasıyla birlikte yazılım kavramları arasına ORM konusu girdi. (ORM'ler veritabanları ile kolay iletişim sağlamamıza yarayan araçlardır. Konuya başlamadan önce ORM konusunda bilginiz yoksa, "ORM Nedir?" makalesine göz atabilirsiniz)
ORM'ler geliştikçe sadece veritabanı sorguları yapmaktan ziyade, geliştirdiğimiz nesne modellerini tablolara dönüştürerek işlerimizi daha kolay hale getirdi. İşte, ORM'lerin bu özelliği Code First Migrations mantığının temelidir. Yani, siz nesneleri ve bu nesneler arasındaki ilişkileri obje düzeyinde düzenlersiniz ve ORM yazılımları bu nesne ilişkilerini tablo ilişkilerine dönüştürürler...
Code First Migrations konusuna giriş yaparken biraz ORM'lerin tarihsel gelişimine vurgu yapmak istedim. Çünkü Code First Migrations ORM'lerin doğuşu ile hayatımıza girmiş bir kavramdır. Bu makalenin amacı temel hatlarıyla Code First Migrations mantığını anlatmaktır.
Code First Migrations mantığını kaba tabirle ifade edecek olursak, önce kodla(nesnelerini oluştur) sonra sınıflara göre tablo oluştur mantığına dayanmaktadır. Çok basit bir örnek verecek olursak kullanıcı ve kişiler tablosu oluşturmak istiyoruz ve her kullanıcının bir kişi özelliği vardır. Bunun için ilişkisel veritabanında kullanıcılar ve kişiler tablosu oluştururuz ve kullanıcılar tablosunu kişilere tablosuna foreign key ile bağlarız. Code first Migrations mantığında da işler hemen hemen aynı şekilde yürür. Tek farkı daha az iş yaparsınız. Kullanıcı ve Kişi classlarını oluşturursunuz ve Kullanıcı tablosunun bir property'si(özelliği) onun kişi özelliğidir. Geri kalan tabloları oluşturmak, tablolar arasında ilişkiler kurmak ve bu ilişkilere göre sorgulamaları yapmak tamamen ORM yazılımının sorumluluğundadır.
Son olarak sıkça karşılaştığım bir konuyu da gündeme getirmek istiyorum. Genel olarak çoğu üniversitede veritabanı derslerinde ORM konuları işlenmez ve buna bağlı olarak iş tecrübesi olmayan mühendislerimiz bu anlamda zorlanmaktadır. Piyasayı iyi bilen ve yeni mezunlarla çalışma imkanı bulduğum için bu makaleyi okuyan ve veritabanı dersleri veren hocalara bir önerim en azından derslerin son bir kaç haftasını bu konulara ayırmalarıdır. (Ve ya hocalarınızdan siz de bu konuları anlatmasını isteyebilirsiniz...)
Code First Migrations konusuna giriş yaparken biraz ORM'lerin tarihsel gelişimine vurgu yapmak istedim. Çünkü Code First Migrations ORM'lerin doğuşu ile hayatımıza girmiş bir kavramdır. Bu makalenin amacı temel hatlarıyla Code First Migrations mantığını anlatmaktır.
Code First Migrations mantığını kaba tabirle ifade edecek olursak, önce kodla(nesnelerini oluştur) sonra sınıflara göre tablo oluştur mantığına dayanmaktadır. Çok basit bir örnek verecek olursak kullanıcı ve kişiler tablosu oluşturmak istiyoruz ve her kullanıcının bir kişi özelliği vardır. Bunun için ilişkisel veritabanında kullanıcılar ve kişiler tablosu oluştururuz ve kullanıcılar tablosunu kişilere tablosuna foreign key ile bağlarız. Code first Migrations mantığında da işler hemen hemen aynı şekilde yürür. Tek farkı daha az iş yaparsınız. Kullanıcı ve Kişi classlarını oluşturursunuz ve Kullanıcı tablosunun bir property'si(özelliği) onun kişi özelliğidir. Geri kalan tabloları oluşturmak, tablolar arasında ilişkiler kurmak ve bu ilişkilere göre sorgulamaları yapmak tamamen ORM yazılımının sorumluluğundadır.
Şu ana kadar karşılaştığım tüm ORM yazılımları Code First Migrations mantığını destekler. Örneğin .NET dünyası için popüler ORM yazılımları olan Entity Framework, NHibernate, Devexpress XPO ve b. Code First Migrations mantığını destekler.(Tabloları oluşturma ve güncelleme mantığı hepsinde farklıdır ama sonuçta aynı işi yaparlar) Diğer programlama dilleri için geliştirilmiş ORM yazılımları için de ilgili dokümanlarının incelerseniz bu yazılımlarda da benzer mekanizmaların olduğunu göreceksiniz.
Son olarak sıkça karşılaştığım bir konuyu da gündeme getirmek istiyorum. Genel olarak çoğu üniversitede veritabanı derslerinde ORM konuları işlenmez ve buna bağlı olarak iş tecrübesi olmayan mühendislerimiz bu anlamda zorlanmaktadır. Piyasayı iyi bilen ve yeni mezunlarla çalışma imkanı bulduğum için bu makaleyi okuyan ve veritabanı dersleri veren hocalara bir önerim en azından derslerin son bir kaç haftasını bu konulara ayırmalarıdır. (Ve ya hocalarınızdan siz de bu konuları anlatmasını isteyebilirsiniz...)
Konuya ilgi gösterip okuduğunuz için teşekkürler. Umarım makalem faydalı olmuştur. Konuyla alakalı sorularınız olursa yorumlardan bana yazabilirsiniz.
Yorumlar
Yorum Gönder