ORM (Object Relational Mapping) Nedir?

Sümeyye Görgülü —  12 Kasım 2014 — 4 Comments

ORM; bir ilişkisel veritabanıyla nesneyi bağlamak için metadata (veri hakkında veri, üstbilgi) tanımlayan programlama tekniğidir. Nesne yani kod Java, C# gibi nesne yönelimli programlama(oop) dillerinde yazılır. ORM; ilişkisel veritabanı ve oop arasındaki veri dönüşümünü gerçekleştirir.Yüzeysel olarak bakıcak olursak ORM, yazılım ile veritabanı arasında bir köprü görevi görür.

1281950302290

  • Veritabanındaki tabloları, sınıflara çevirir. ORM sayesinde kod yazarken veritabanında daha az zaman harcarız.
  • ORM; veri kaynağı değiştiğinde onu kapsüller (encapsulates) ve gizler.
  • Geliştirme ve bakım maaliyeti düşüktür. Çünkü nesne-veritabanı, veritabanı-nesne dönüşümünü otomatik gerçekleştirir.
  • Daha az SQL sorguları yazarız.
  • Veritabanını harita olarak önümüze sunar böylece karmaşık veritabanlarını anlamak kolaylaşır.
  • ORM uygulama katmanı altında bulunur.
  • ORM tüm nesne yönelimli programlama dilleri için mevcuttur.
  • Java için bazı ORM’ler: Hibernate, JPA, EclipseLink…

Sümeyye Görgülü

Posts Twitter

Çanakkale On Sekiz Mart Üniversitesi Bilgisayar Mühendisliği bölümünden mezun oldu. Yazmayı,paylaşmayı seviyor.

4 responses to ORM (Object Relational Mapping) Nedir?

  1. Pek microsoft şinas değilim ama ORM’in microsoft dünyasındaki karşılığı Entity Framework. http://en.wikipedia.org/wiki/Entity_Framework

    ORM, kabaca veri yapılarının uygulama tarafında sınıf olarak ifade edildiği, uygulamanın veritabanından soyutlanmasını sağlayan bir teknoloji. Uygulama dahilinde ORM kullanılması durumunda, veritabanı spesifik komutlar kullanmak yerine ORM in kullanıldığı dilde programlama yaparak sorgulama veya güncelleme işlemleri gerçekleştirilir. Ayrıca ORM in getirdiği soyutlama, bilinen güvenlik sorunlarını da daha alt seviyede çözdüğü için programcının yaptığı her işlemde güvenlik kaygısı altında programlama yapmasının önüne geçer. Genellikle sorgu üretimi nihai noktada gerçekleştiğinden bazı durumlarda hakikaten daha optimistik veritabanı sorguları ürettiği gerçektir. ORM kullanılan uygulamalarda veritabanı spesifik programlama yapılmadığı için farklı bir veritabanına migration durumunda teoride uygulamada herhangibir değişiklik gerçkekleştirmeye gerek yoktur *. Bu olumlu yanları dışında ORM in veri çekme sırasında, veritabanından alınan herbir kaydı uygulama tarafında bir sınıfa cast ettiğini düşünürseniz, birkaç milyon kayıt içeren bir tablodan ORM kullanarak veri çekmenin kaynak tüketimi konusunda sorun olabileceği ve bu nedenle bazen ORM i delmek zorunda kalınabileceği unutulmaması gereken bir gerçektir.

    Kısaca ORM iyidir, güzeldir, kullanınız, kullandırınız. 🙂

    * Migration sırasında veritabanları arası bazı veritipi uyumsuzluklarında nadiren de olsa uygulamada ufak değişiklikler gerekebilir.
    *

  2. Merhabalar
    Ben de .NET teknolojileri hakkında çok bilgili değilim. Biraz araştırmadan sonra bir kaç sonuç elde ettim. Öncelikle Vikipedi’de yer alan ORM listesine Linq to Sql’de dahil edilmiş.
    Linki:
    http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#.NET
    Microsoftun kendi sitesinde LINQ’nun bir ORM olduğu ifade edilmiş.
    Linki:
    http://msdn.microsoft.com/en-us/library/cc161164.aspx
    Lakin stackoverflow’da pek çok tartışma geçmiş. Pek çok kişi yalnızca bazı ORM özelliklerini taşıdığını fakat tam anlamıyla ORM olmadığını söylemiş.
    Şöyle ki Linq’nun kolaylık sağladığını,fakat sadece sorgulama,okuma,kodun yeniden kullanılabiliriğini kolaylaştırmak için belirli bir dizi barındırdığını bu yüzden de bir ORM olamayacağını,LINQ’in farklı bir SQL dili uzantısı olduğunu savunuyor.
    Linkler:
    http://stackoverflow.com/questions/8163513/ls-linq-an-orm-object-relational-mapper
    http://stackoverflow.com/questions/193781/is-linq-an-object-relational-mapper

  3. İbrahim Bey yorumunuz ve detaylı açıklamalarınız için teşekkürler (:

  4. ilk defa bloğunuza girdim ve içeriklerinizi çok beğendim başarılarınızın devamını dilerim

sumeyyegorgulu için bir cevap yazın Cevabı iptal et