ORM (OBJECT RELATION MAPPING) Nedir?
Bu yazımızda son zamanlarda çok sık duymaya başladığımız bir kavram olan ORM hakkında bilgi vermeye çalışacağım. Öncelikle bu konuda herkes bir şeyler söylüyor projelerimde ORM kullanmak zorunda olan biri olarak birkaç şey de ben ilave edeyim dedim..
ORM kullanmak zorundayım dedim çünkü şirketim bir ORM aracı satın almış , ona para vermiş ve yazılımcıların işleri hızlı bir şekilde çıkarması için bu yazılımları kullanmasını bekliyor. Biz de kullanıyoruz çünkü gerçekten bize zaman kazandırıyor.
Öncelikle ORM nedir sorusuna cevap bulalım ; 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.
Örnek Veritabanımızda bir tablo var Ogrenci(id,adi,soyadi,sinifi) Normal şartlarda OOP yazılım geliştirirken bu tabloya karşılık gelen bir sınıfı kendimiz elle oluştururuz. Yani Ogrenci isminde bir sınıf ve id , adi , soyadi , sinifi field ve property lerini oluştururuz sonra da Update,Insert,Delete ve Select sorgularını hazırlarız. İşte ORM bütün bu standart işlemleri otomatik olarak yapıyor. Ayrıca tablolar arasındaki ilişkilerden tutun da yazmış olduğunuz stored procedüre’leri çağıran fonksiyonlara kadar her bir nesnenin kodunu önümüze sunuyor.
Ne güzel diyebilirsiniz , gerçekten de güzel . Çok hızlı veri tabanından bağımsız , katmanlı bir uygulama geliştirebiliyorsunuz. Örneğin biz şirketimizde LLBLGEN isminde bir bileşen kullanıyoruz.Bunlara karşılık .NET’in Linq’u , Java’nın Hibernate ve daha bir çok bileşen bulmak mümkün.
Şekil 1: Örnek class diagram
Örnek bir kod :
OgrenciEntity entity = newOgrenciEntity(id);
entity.Name = ‘Koray’;
entity.Save();
İşte veritabanına kayıt eklemek bu kadar kolay.
Tabi ki dezavantajları da mevcut.Bunlardan bir tanesi performans , kaybı diğeri ise kontrolün sizden bir anlamda çıkması.Performansın önemli olduğu ve karışık sorguların bulunduğu kısımlar hariç kullanmakta yarar var diye düşünüyorum. Bazıları kesinlikle kullanmayın diye tabirlerde bulunuyor ancak benim 2 haftada yapacağım işi 3 güne düşürüyorsa neden kullanmayayım. Ancak bir projede hem ORM hem de kendi kodumuzu yazabiliriz. Böyle bir yapı sanırım daha sağlıklı.Aslında bana göre en iyisi herşeyi kendinizin yaptığı yazılımdır ancak bazen zaman kısıtı sizi böyle şeyler kullanmaya zorluyor.