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

Şimdi, faydaları. Her şeyden önce, SQL’i mantık kodunuzdan uzaklaştırın. Bu, daha fazla veritabanı motorunu daha kolay desteklemenize izin verme avantajına sahiptir. Örneğin, MS SQL Server ve MySQL tipik işlevler üzerinde farklı isimlere ve tarihlerle hesaplama yapmak için farklı yöntemlere sahiptir, bu nedenle “son 24 saat boyunca oluşan kullanıcılar” sorgusu sadece bu iki veritabanı motoru için farklı SQL yazmanızı  gerektirebilir . Bu fark mantık kodunuzdan uzaklaştırılabilir. Ayrıca, tüm SQL haklarını almak yerine, mantığı yazmaya odaklanabilirsiniz.

ORM nedir?