Enginær Projesinin tanıtımını yazarken ORM kavramından bahsetmiştim. Biraz detaylı bakalım tam olarak neymiş bu ORM. Açılımı Object relational mapping, veri tabanındaki Table, View ve Stored Procedure leri objelere çevirerek kodlama tarafında kolay kullanım sağlamaktır ( ek faydaları da yok değil ).

ORM Detail

Yukarıdaki görselde gözüktüğü gibi aslında ORM araçlarının yaptığı iş en basitinden bir veri tabanı tablosu üzerindeki alanları belirli özellikleriyle bir sınıfa dönüştürür. Örneğimizden yola çıkarak;

Veri Tabanı Uygulama
Tablo Sınıf
Kolon Özellik
Primary Key Salt Okunur Özellik
Allow Null Nullable Özellik
View Salt Okunur Sınıf

gibi bir tablo basit olarak çıkartılabilir.

ORM kavramının en önemli noktası veri tabanındaki varlıkları nesne tabanlı yapıya uygun olarak sınıflara çevirebilmek. İsterseniz kolonları public değişkenlere çevirin, sizin seçiminize kalmış.

Tekrar örneğimize dönersek; veri tabanından uygulama tarafına geçebiliyoruz, tam tersi de yapılabilir mi? Aslında veri tabanından uygulama tarafına geçilmesi işlemine ORM içinde Reverse Mapping deniliyor. Uygulamadan veri tabanı tarafına geçilmesi işlemine ise Forward Mapping deniliyor. İkisi arasından en çok kullanılan Reverse Mapping. Siz uygulamalarında hangisini kullanırsanız kullanın size esas amacının CRUDCreate, Retrieve, Update, Delete ) işlemlerinde kolaylık sağlaması olduğunu unutmayın.

Hep kolaylık kolaylık dedim, tam olarak nasıl bir kolaylık sağlıyor ondan da bahsedeyim. Örneğin projenizde güncellemeler yapacaksınız, yapacağınız en büyük güncelleme veri tabanı değişikliği. ORM aracı kullanıyorsanız tek yapacağınız (aynı veri tabanı şemasını kullandığınızı düşünelim), veri tabanına özel olarak kullandığı kütüphaneyi değiştirmek ve bağlantı cümlesini güncellemek. Bunlar sayesinde uygulamanızda çok büyük değişiklikler yapmadan da uygulamanızın geçişini sağlayabilirsiniz.

Başka bir örnek vermek gerekirse; AS400 ( bankaların bazıları hala kullanıyor ) veri tabanında çalışan bir uygulamanız var, buradan bir veri tabanı şeması alıp MSSQL üzerine taşımanız zor olabilir. Ancak uygulamanız katmanlı mimari olarak geliştirilmiş ve veri katmanının ayrımı düzgün yapılmış. Sınıflarınızı kullanarak veri tabanı yapınızı oluşturabilir ve uygulamanızı çok hızlı olarak kullanmaya başlayabilirsiniz.

Bahsettiğim kolaylıklar tamamen taşımalar ile ilgili bunlara ek olarak farklı kütüphaneler farklı faydalarda sağlayabilir. Fakat bana göre bir ORM aracında olması gereken özellikler ve sağlaması gereken faydalar;

  • Forward ve Reverse Mapping desteğinin olması
  • Özelleştirilmiş kod yazılmasına izin verebilmesi
  • Veri tabanı sorgularının azaltılması ve güvenliğinin sağlanması
  • Cache yapısına sahip olması
  • Loglama yapısına sahip olması
  • Mappingler üzerinden kod üretimi yapabiliyor olması
  • Performanslı çalışabilmesi

şeklindedir. Bu özellikler bir ORM aracında mutlaka olmasını isteyeceğim özellikler. Bunlara ek olarak başka özelliklerinde olması her zaman faydalı olabilir. Kavramlar kısmını tamamladık şimdi geldi proje geliştikçe sorunlardan ve özelliklerden bahsetmekte. Bunlar için yavaş yavaş yazıları yazmaya çalışacağım.

Yorumlayın