ORM, Object-Relational Mapping anlamina gelir. ORM mekanizmasi, objelerimiz ile onlarin verilerinin tutuldugu veri tabani arasinda bir “abstraction” (soyutlama) katmani yaratmamizi saglar. ORM kullanarak uygulamamiz ile veri tabanimiz arasinda yarattigimiz bu soyutlama sayesinde uygulamamiz alttaki veri tabani yonetim sistemi uygulamasindan (RDBMS) bagimsiz hale getirilmis olur. ORM kullanimi, SQL kodu yazilmasi ihtiyacini “buyuk olcude” ortadan kaldirir. Buyuk olcude diyorum zira nadiren de olsa bazen “custom” SQL scriptleri yazarak bu scriptleri calistirmaniz gerekecek durumlarla karsilasabilirsiniz.
Eger birden fazla veri tabani ile calisabilen bir uygulama yazmak istiyorsaniz ORM kullanmayi dusunmekte fayda var, aksi taktirde uygulamanizin beraber calismasini istediginiz her bir RDBMS (Relational Database Management System) icin ayri ayri SQL scriptleri yazmaniz gerekecektir (ORACLE, MySQL, PostgreSQL) ki bu da idamesi cok zor bir hal alacaktir.
Bir ORM Framework’u kullandiginiz zaman, CRUD (create, read, update, delete) operasyonlarini yapmak icin SQL yazmazsiniz. Asagidakilere benzer, uygulama gelistirmede tercih ettiginiz programlama dilinde yazar gibi, ifadeler (expression) ile veri tabani islemlerini gerceklestirebilirsiniz:
myCategory.objects.get(category_name=“some_category”)
ORM mekanizmasini “implement” eden/saglayan cesitli framework’ler vardir. Bunlardan en cok bilinenleri Java dunyasinda Hibernate, .NET dunyasinda NHibernate. Bunlar gibi munferit, framework olarak implement edilmis ORM cozumlerinin yaninda bir framework’un parcasi olarak, onun icerisinde hazir gelen ORM cozumleri de vardir. Mesela Django, Python web gelistirme framework’u, kendi ORM cozumune sahiptir (Django ORM).