1. Anasayfa
  2. ASP.Net

Entity Framework Giriş. ORM Nedir?


3

Bu makaleyi şuan okuduğunuza göre daha önce Ado.net ile uygulama geliştirmiş veya en kötü ihtimalle Ado.net in ne olduğunu nasıl çalıştığını bir veri tabanına nasıl bağlantı yapıldığını ve uygulama içerisinden nasıl veri tabanı işlemleri yapıldığını biliyor olduğunuzu düşünüyorum arkadaşlar. Şimdi şu ana kadar ki uygulamalarımızda veri tabanı işlemlerini nasıl yapıyorduk? Öncelikle veri tabanımızı oluşturup daha sonra uygulama tarafına geçip ilgili yerlere veri tabanı işlemleri yapan kodlarımızı yapıyorduk değil mi? Yani şekil olarak resmetmek gerekirse;


Resim-1

Yukarıdaki şekle bakıldığında hangi platformda olursa olsun uygulamamız direk olarak bir veri tabanına bağlı durumda. Bu durumda uygulama üzerinden veri tabanını etkileyecek herhangi bir işlem yapmak istediğimizde SQL ifadeleri kullanmak durumundayız. Peki, bu sistemin nasıl dezavantajları var da bugün sizlere anlatacağım ORM araçları ortaya çıkmıştır?

  • Öncelikli olarak eğer bir veri tabanı uygulaması yazacaksanız kesinlikle SQL bilmek zorundasınız. Aksi takdirde hiç bir şekilde veri tabanı işlemlerini uygulamanıza yaptıramazsınız.
  • İkinci olarak ise bu sistemde öncelikle Database oluşturulup daha sonra uygulama üzerinden SQL ifadeleri ile veri tabanı işlemleri yapılmaktadır. Bu durum da hem ekstra zaman kaybı ve ekstra iş kaybı yaşatmaktadır. Malumunuz üzere işverenin tek düşündüğü durum para olduğu için bizim gibi oldukça değerli olan yazılımcıların minimum zamanda maksimum iş çıkarmaları işveren için oldukça önemlidir.
  • Üçüncü bir dezavantajı ise tamamen Database bağımlıdır. Yani çalıştığınız yer bir anda artık bundan sonra Oracle yerine MS SQL kullanacağız dediğinde oturulup oldukça fazla düzenlemeler yapılmak zorundadır. Hele birde düşünün ki web uygulaması yapıyorsunuz. Bu Database değişikliğine uyumun çok kısa bir süre içerisinde olması gerekmektedir değil mi?
  • Bir diğer dezavantajı ise yazılımcının Database işlemleri arasında boğulup kaldığı için uygulamanın mantıksal kısımlarına gerektiği kadar zaman ayıramama durumu yaşamaktadır.
  • Son olarak da uygulamanız üzerinden Database deki herhangi bir nesnenin Tablo, View, SP hatta kolona kadar yapısal özelliklerini değiştirmek için uzun uzadıya SQL ifadeleri yazmak zorundasınız.

Evet, arkadaşlar şuana kadar kullandığınız yöntem ne kadar zormuş değil mi? Şimdi sizlere öyle bir konu anlatacağım ki siz de ben neler çekiyormuşum diyeceksiniz :) Evet tahmin ettiğiniz gibi ORM’e giriş yapacağız.

Şimdi arkadaşlar ORM nedir? Öncelikle bu sorunun cevabıyla başlayalım. ORM yani Object Relational Mapping, veri tabanınızdaki tabloları Class’lara, kolonları Property’lere, tabloların içindeki kayıtları da Object’lere dönüştüren ve tüm bu dönüşün sonucunda oluşan Class’lar ve objeler üzerinden veri tabanı işlemlerinizi yapmayı sağlayan bir teknolojidir. Yani kısaca tanımlamak gerekirse Database modelini uygulama modelindeki nesnelere uyarlar. Aslında yaptığı iş tam olarak Database modelini uygulamadan soyutlayarak nesneler üzerinden işlem yapmamızı sağlar.

ORM’in ne olduğunu anladıktan sonra bir de şekle dökmek gerekirse;


Resim-2

Yukarıdaki şekle bakıldığında uygulama ORM e bağlı olduğunu görebiliriz. Database le direk olarak herhangi bir bağlantısı söz konusu değildir. Peki, burada bizim yapmak istediğimiz Database işlemlerimiz nasıl oluyor da SQL ifadesi yazmadan gerçekleşiyor? Uygulama tarafında oluşan nesneler üzerinden biz Database işlemi yaptığımızda ORM tarafından bu işlem SQL ifadesine dönüştürülüyor. Bu işleme Code Generating işlemi denir. Tüm ORM araçları aynı işlemi yaparlar. Mesela siz uygulamanızda bir nesne üzerinden bir tabloya kayıt ekleme işlemi yapmak istediğinizde ORM otomatik olarak insert SQL ifadesini oluşturup Database e gönderir. Bu sayede sizin SQL bilmenize gerek kalmamaktadır.

ORM in ne olduğunu ve nasıl çalıştığını anladıktan sonra maddeler halinde avantajlarına ve dezavantajlarına bakalım arkadaşlar.

Avantajları ;

  • OOP olarak kod geliştirmeye imkan sağlamaktadır.
  • SQL bilmeden bir veri tabanına bağlanabilir ve SQL ile ilgili birçok işlemi rahatlıkla yapabilmek.
  • Herhangi bir Database bağımlılığı yoktur.
  • Oldukça esnek bir yapı sağlamaktadır. Yani Oracle kullanıyorken bir anda MS SQL i kullanabiliriz.

Dezavantajları :

  • Performans. Bir ADO.Net kadar hızlı çalışmamaktadır.
  • Database den bilgi alış-verişi sırasında kontrol %100 bizde değildir. Bazen oluşturulan SQL ifadelerinde sorun çıkabilir veya biz daha güzel ve hızlı çalışacak SQL ifadeleri yazabileceğimiz durumlar olabilir. Fakat tüm SQL ifadelerini Code Generating ile kendi oluşturduğu için bu bir dezavantajdır.
  • Veri tabanı bağımsızdır. Fakat uygulama tarafındaki nesneler ile veri tabanındaki nesneler birbirine MAP edildiği için nesne bağımlılığı vardır.

Farklı platformlarda farklı farklı ORM araçları mevcuttur arkadaşlar. Mesela Java’da Hibernate, Microsoft’ta, EntityFramework… Aynı zamanda Hibernate altyapısını kullanan ve .Net platformu için nHibernate ORM aracı vardır. Daha birçok araç mevcuttur. Fakat temelinde hepsi ORM mantığı ile çalışırlar.

Elimden geldiğince ORM’i anlatmaya çalıştım. Sonraki makalelerimde Microsoft’un ORM araçlarından olan Entity Framework’ü anlatacağım. Tekrar görüşmek dileğiyle.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 12
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 5
    sevdim_
    Sevdim!
  • 1
    bilemedim_
    Bilemedim!
  • 1
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

İzmir Atatürk Anadolu Teknik Lisesi, Dokuz Eylül Üniversitesi Bilgisayar Teknolojisi ve Programlama Bölümü mezunuyum. Şuan Dokuz Eylül Üniversitesi Bilgisayar Mühendisliği Bölümünde son sınıftayım. Yazılım ile 2004 yılında tanıştım ve yaklaşık olarak 4-5 yıldır piyasaya freelance olarak proje geliştiriyorum. Ek olarak MCP unvanına sahibim.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (3)

  1. 04/12/2014

    Anlatim çok akıcı ve sade. Tsk ederiz.

  2. 15/02/2018

    Tşkler güzel bir makale

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir