ORM (Object-Relational Mapping) nedir?

Nesne-İlişkisel Haritalama (ORM), Nesne odaklı paradigma kullanarak bir veritabanından veri sorgulamanıza ve işlemenize izin veren bir tekniktir.

ORM’den bahsederken çoğu yazılım geliştirici Object-Relational Mapping tekniğini uygulayan bir kütüphaneye ihtiyaç duyar.

Bir ORM kütüphanesi , kullandığınız programlama dilinde verileri içeri çekerek onları manipüle edip nesnelere dönüştürmektedir , yani artık sql kullanmanıza gerek kalmıyor . Kullanmakta olduğunuz dilde veritabanı ile doğrudan iletişime geçersiniz.

Örneğin : Bir kitap sınıfınız var ve yazarı : “Orhan Pamuk” olan kitapları sınıfa atamak istiyorsunuz böyle birşey yapardınız ;

List<Kitap> kitaplar= new List<Kitap>();
sql = "SELECT * FROM Kutuphane WHERE Yazar = 'Orhan Pamuk'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
Kitap k = new Kitap();
k.yazar=row["Yazar"];
kitaplar.add(kitap);
}

Bir ORM kütüphanesi ile şöyle görünürdü:

List<Kitap> kitaplar = db.Kitaplar.Where(x=>x.Yazar=="Orhan Pamuk").ToList();

Nesne ve yapı otomatik olarak ORM Kütüphanesi aracılığıyla halledilir.

Neden ORM?

ORM kullanmak çok zaman kazandırır çünkü :

– Veri modelinizi sadece bir yere yazarsınız ve kodu güncellemek, korumak ve yeniden kullanmak daha kolaydır.
– Veritabanı işlemeden Lokalizasyona kadar birçok şey otomatik olarak yapılır .
– Sonunda, kodunuzu biraz daha temiz hale getiren MVC kodunu yazmaya zorlar.
– Kötü biçimlendirilmiş SQL yazmak zorunda değilsiniz. ( Çoğu Web Programcısı farkında olmasada SQL performansı önemli ölçüde etkiler sql çok güçlü ve karmaşık bir dildir )
– Hazır Sınıfları kullanarak bir metodu çağırmak kadar kolaydır.

Bir ORM Kütüphanesi daha esnektir çünkü :

– Kullandığınız programlama diliyle uyumlu çalışır.
– Veritabanı sistemini soyutlar böylece istediğiniz zaman değiştirebilirsiniz
– Veritabanı modeli yazılımın belirli kısmına hitap eder böylece onu değiştirebilir veya bir .dll haline getirip başka bir yerde de kullanabilirsiniz
– OOP (Nesne tabanlı programlama) baş ağrısı olmaksızın kullanmanıza olanak sağlar .

Öğrenmeniz zor olabilir

– Öğrenmek zorundasınız bunu unutmayın ORM Kütüphanesi yeterli bilgisi olmayan için kolay değildir.
– ORM Kütüphanesini kurmanız ve Veritabanı şemasını oluşturmanız sizi zorlayabilir

ORM nasıl öğrenilir?

– Peki hangisini kullancaksınız ? ORM Kütüphanesileri aynı prensipleri kullanırlar. Programlama dillerine göre birçok ORM Kütüphanesi var;
– Java: Hibernate.
– PHP: Propel or Doctrine
– Python: the Django ORM or SQLAlchemy
– C#: NHibernate or Entity Framework
– NodeJs : Sequelize

ORM nedir?