ORM (OBJECT RELATION MAPPING) Nedir?

ORM, Object Relational Mapping anlamına gelmektedir. O/R Mapping olarakta yazılabilir.
Veritabanımızda yaratmış olduğumuz her bir nesneye karşılık kod tarafında bir nesne oluşturan programlardır diyebiliriz.Bu programlar code generation tekniği kullanarak bizim yazmamız gereken kodu otomatik üretiyor.
İlişkisel veritabanları ile Object-Oritented (Nesneye dayalı) uygulamaların arasındaki veri uyumunu sağlayan bir tekniktir. Birbirine uyuşmayan veri tipleri arasındaki veri dönüşümünü sağlar. Bu sayede biz uygulamalarımızda nesneleri kullanırken bunların veritabanında nasıl tutulduğunu dert etmeyiz. Eğer veritabanımızı iyi şekilde tasarlamışsak, nesnelerimizi de ona uygun şekilde oluşturmuşsak işimiz çok kolaylaşır. Veritabanı seviyesine inmeden uygulama verileriyle işlem yapabiliriz.

Avantajları Nelerdir?
Nesneye yönelik programlama metoduna uyumludur.
Programlama dilinden veya veritabanı çeşitlerinden bağımsız.
SQL kodu bilmeden veritabanı işlemleri gerçekleştiren uygulamalar yazabilirsiniz.
ORM araçlarının bir çoğu açık kaynak kodlu.
Polymorphism (çokbiçimlilik) gibi ilişkisel veritabanı problemlerini çözecek yapılar barındırırlar.

Dezavantajları Nelerdir?
Performans ile ilgili problemler ortaya çıkacaktır.
Veritabanı işlemlerine doğrudan etki etmeniz pek olanaklı değildir.
Hangi ORM aracını kullanacaksanız onu öğrenmek için belirli bir zaman harcamanız gerekir.

ORM araçları kullandığınız parametre ve metodlara göre sql kodlarını otomatik olarak üretir. Dolayısıyla üretilen bu kodlarda gereksiz kısımlar olabilir, efektif sql kodlarıyla işlem yapmıyor olabilirsiniz. Basit bir şey istediğinizde bu istek bir çok yapıdan geçip zaman kaybettiriyor olabilir. Bu araçlarla doğrudan sql kodu da yazabilirsiniz.