Yazılımla ilgilenen herkes acemilik aşamasını atlattıktan sonra karşılaşacakları kavramlardan bir tanesi ORM terimidir. ORM Object Relational Mapping sözünün ilk harflerinin kısaltması ile oluşturulmuştur.
ORM ilişkisel veri tabanındaki tabloların objelere dönüştürülmesi veya objelerden tabloların üretilmesi sağlayabilen ve bunun sonucunda SQL sorgularının objeler üzerinden sorgulamaya dönüştüren teknolojilere verilen genel isimdir.
Genel olarak çoğu ORM yazılımları iki yönlü iletişimi de destekler. Yani veri tabanı bağlantısına göre tablolardan objeler oluşturulabilir veya objelerden tablolar oluşturulabilir. ORM teknolojilerin genel olarak amacı kodlama içinde bizi direkt sql'lerden kurtararak objeler üzerinde sorgulama yapmamızı sağlamaktır.
Hemen hemen tüm ORM yazılımlarının bünyesinde oluşturulan objeleri sorgulamak için bir yapı mevcuttur. Örneğin C# için bir ORM uygulaması kullandığınızda genelde sorgularınız Linq To Sql sorgularına dönüşür.
ORM konusunu anlayabilmek için öncelikle Nesne Yönelimli Programlama konusunda bilgi sahibi olmalısınız. Bunun gerekliliğini, işin içine girdiğinizde daha iyi anlayacaksınız. Örneğin, tüm tablolarınızda OID, Created Time, Is Active gibi bir tasarım planladınız. Bunu her sınıfta yazmak yerine genel BaseObject sınıfında yazıp kalıtımla almak zorundasınız. Bu güzel kod yazmanızın gerekliliğidir. Fonksiyonel programlama dillerinden birini de kullanmıyorsanız bunu mutlaka yapmalısınız... Özetle Nesne Yönelimli Programlama konusunda bilgi sahibi olmak ve nesne yönelimli programlama mantığını çok iyi uygulayabiliyor olmak çok önemlidir...
İkinci paragrafta verdiğim cümleler bu konuyla yeni tanışan insanlar için karmaşık gelebilir. Bu anlamda söylemek istiyorum ki bu makale yalın olarak ORM nedir konusuna odaklanmış olsa da, ORM konusunu tam olarak anlayabilmek için bunu uygulamaya koymanız gerekir. Hangi programlama dili kullanıyorsanız o programlama dili için geliştirilmiş ORM yazılımlarını inceleyin ve bir örnek uygulama yazın...
Örneğin .net frameworkunu kulanıyorsanız Entity Framework, Devexpress XPO, NHibernate en çok kullanılan teknolojiler arasında. Bunlardan başlangıç için en iyisi Entity Framework'dur. Daha sonrada profesyonelce işe yaklaşıyorsanız benim görüşüm tüm teknolojileri avantaj ve dezavantajları, özellikle sorgulama hızları performanslarını karşılaştırarak seçim yapın.
Verdiğim örneğin sadece .net platformu içindi. Ama daha önce de söylediğim gibi hangi programlama dilini kullanıyorsanız konuya başlamadan önce detaylı araştırma yaparak önce kullandığınız programlama dili için seçenekleri ortaya koyun. Bundan sonra kullanacağını teknolojilerin artı ve eksilerini öğrenin ki bunun en iyi yolu da uygulamaktır.
ORM seçiminde bir diğer önemli nokta da geliştirici kitlesidir. Yani seçim yaparken kullandığınız yazılımın çok büyük bir kitle tarafından kullanılıyor olması karşılaşacağınız sorunlarla ilgili kolay çözüm bulabileceğiniz anlamına gelir...
Bu kısa makalemizde "ORM Nedir?" konusuna değinmeye çalıştım. Anlattığım konuların daha önce bu konuda bilgi sahibi olanlar için altyapı mahiyetinde çok yararlı olacağını düşünüyorum. Yazılıma yeni başlayanlar için biraz ağır bir konu olsa da zamanla bu konuda çok daha bilgi sahibi olmaları gerektiğini de vurgulamak istiyorum...
Umarım makalem faydalı olmuştur. Konuyla alakalı sorularınız olursa sormaktan çekinmeyin. Fırsat buldukça sorularınızı da yanıtlamaya çalışacağım...
ORM ilişkisel veri tabanındaki tabloların objelere dönüştürülmesi veya objelerden tabloların üretilmesi sağlayabilen ve bunun sonucunda SQL sorgularının objeler üzerinden sorgulamaya dönüştüren teknolojilere verilen genel isimdir.
Genel olarak çoğu ORM yazılımları iki yönlü iletişimi de destekler. Yani veri tabanı bağlantısına göre tablolardan objeler oluşturulabilir veya objelerden tablolar oluşturulabilir. ORM teknolojilerin genel olarak amacı kodlama içinde bizi direkt sql'lerden kurtararak objeler üzerinde sorgulama yapmamızı sağlamaktır.
Hemen hemen tüm ORM yazılımlarının bünyesinde oluşturulan objeleri sorgulamak için bir yapı mevcuttur. Örneğin C# için bir ORM uygulaması kullandığınızda genelde sorgularınız Linq To Sql sorgularına dönüşür.
ORM konusunu anlayabilmek için öncelikle Nesne Yönelimli Programlama konusunda bilgi sahibi olmalısınız. Bunun gerekliliğini, işin içine girdiğinizde daha iyi anlayacaksınız. Örneğin, tüm tablolarınızda OID, Created Time, Is Active gibi bir tasarım planladınız. Bunu her sınıfta yazmak yerine genel BaseObject sınıfında yazıp kalıtımla almak zorundasınız. Bu güzel kod yazmanızın gerekliliğidir. Fonksiyonel programlama dillerinden birini de kullanmıyorsanız bunu mutlaka yapmalısınız... Özetle Nesne Yönelimli Programlama konusunda bilgi sahibi olmak ve nesne yönelimli programlama mantığını çok iyi uygulayabiliyor olmak çok önemlidir...
İkinci paragrafta verdiğim cümleler bu konuyla yeni tanışan insanlar için karmaşık gelebilir. Bu anlamda söylemek istiyorum ki bu makale yalın olarak ORM nedir konusuna odaklanmış olsa da, ORM konusunu tam olarak anlayabilmek için bunu uygulamaya koymanız gerekir. Hangi programlama dili kullanıyorsanız o programlama dili için geliştirilmiş ORM yazılımlarını inceleyin ve bir örnek uygulama yazın...
Örneğin .net frameworkunu kulanıyorsanız Entity Framework, Devexpress XPO, NHibernate en çok kullanılan teknolojiler arasında. Bunlardan başlangıç için en iyisi Entity Framework'dur. Daha sonrada profesyonelce işe yaklaşıyorsanız benim görüşüm tüm teknolojileri avantaj ve dezavantajları, özellikle sorgulama hızları performanslarını karşılaştırarak seçim yapın.
Verdiğim örneğin sadece .net platformu içindi. Ama daha önce de söylediğim gibi hangi programlama dilini kullanıyorsanız konuya başlamadan önce detaylı araştırma yaparak önce kullandığınız programlama dili için seçenekleri ortaya koyun. Bundan sonra kullanacağını teknolojilerin artı ve eksilerini öğrenin ki bunun en iyi yolu da uygulamaktır.
ORM seçiminde bir diğer önemli nokta da geliştirici kitlesidir. Yani seçim yaparken kullandığınız yazılımın çok büyük bir kitle tarafından kullanılıyor olması karşılaşacağınız sorunlarla ilgili kolay çözüm bulabileceğiniz anlamına gelir...
Bu kısa makalemizde "ORM Nedir?" konusuna değinmeye çalıştım. Anlattığım konuların daha önce bu konuda bilgi sahibi olanlar için altyapı mahiyetinde çok yararlı olacağını düşünüyorum. Yazılıma yeni başlayanlar için biraz ağır bir konu olsa da zamanla bu konuda çok daha bilgi sahibi olmaları gerektiğini de vurgulamak istiyorum...
Umarım makalem faydalı olmuştur. Konuyla alakalı sorularınız olursa sormaktan çekinmeyin. Fırsat buldukça sorularınızı da yanıtlamaya çalışacağım...
Yorumlar
Yorum Gönder