ORM Nedir?
İlişkisel veri tabanı sistemleri tablolar arası bağlar vb yöntemler baz alınarak tasarlanmış veri yönetimi sistemlerdir. Bu tip veri tabanı sistemlerine karşın, object mapping tabanlı veri tabanı sistemleri geliştirme denemeleri olsa da genel kabul görmemiştir. Veri dünyasında ilişkisel veri tabanları, an itibari ile tartışmasız lider konumdadırlar. Birkaç yıldır noSQL denilen sistemler popüler olsa da bu sistemlerin temeli çok eskilere dayanır. Ve belirli alanlarda çok başarılıdırlar.
Nesne Tabanlı veri tabanı sistemleri başarılı olmayınca bazı yazılımcılar nesneler ile veri tabanı arasında doğrudan ilişki kurabilen sistemler üzerinde çalışmalar yaptılar. Bu çalışmalar sonucunda ORM denilen toollar, frameworkler ortaya çıktı.
İşlevleri bakımından veri tabanı ile uygulama arasında yer alan ara katmanlar olarak konumlanmaktadırlar. Bu toollar ve başarıları her zaman her seviyede büyük tartışmalara neden oldu.
ORM tooları içerisinde dünya da tartışmasız en popüler olan HIBERNATE ’dir. Hibernate’nin geliştiricisi “Gavin King” bu konudaki görüşlerini çok net ifade etmiştir.
The second problem is sort of cultural. Some developers come to using a tool like Hibernate because they are uncomfortable with SQL and with relational databases.
We would say that this is exactly the wrong reason to use Hibernate. You should be very comfortable with SQL and JDBC before you start using Hibernate – Hibernate builds on JDBC, it does not replace it.
So, when developing business logic that calls Hibernate, you should be monitoring exactly what database requests ends up being generated. It is otherwise very easy to build an application that performs badly because you simply have no idea what is happening underneath. That is the cost of extra abstraction.
Gavin King, Hibernate
Bazı developerlar SQL ve İlişkisel Veri Tabanlarına hakim olmadıkları için Hibernate gibi araçları tercih ediyorlar.
Bu yaklaşımın temelden yanlış olduğunu söyleyebiliriz. Hibernate kullanmadan önce SQL ve JDBC konularına hakim olmak şarttır. Hibernate, JDBC üzerinde çalışan bir araçtır. Asla JDBC yerine geçen bir araç değildir.
Developer, Hibernate ile geliştirme yaptığında Hibernate ’in üreteceği veri tabanı sorgularına tam anlamıyla hakim olmalıdır. Aksi halde Hibernate tarafından yapılan soyutlamanın bedeli olarak, buradaki alt yapıyı bilmeden yapılan geliştirmeler sonucunda düşük performans değerlerine sahip uygulamalar ortaya konulacaktır.
Gavin King, Hibernate
Bu toollar OOP yazılım dünyasında hızla yer edindiler. İnanın birçok yazılımcı ve/veya yazılım mimarı geliştirdikleri projede böyle bir toola ihtiyaçları var mı diye sorgulamadılar bile. Şunu net ifade etmek isterim ki ORM toollarının hiçbirisi kendi başına çalışamaz. JDBC ye ihtiyaç duyar. Sadece JDBC üzerinde kendilerine ait katmanları koşturarak veri tabanı işlemlerini
yapabilirler.
Bu da elbette ki extra performans sorunları doğurmaktadır. Doğa kanunları böyle…
- Senin bir araban var ve sen bu arabaya zırh yaptırmak istedin.
- Arabanın ağırlığı artacak yani motora fazladan ağırlık binecek ve
performansı düşecektir.- Performans iyileştirmesi için illa ki motora takviye yapılması gerekmektedir.
- Arabanın ağırlığı artacak yani motora fazladan ağırlık binecek ve
Yazılım, bu doğa kanunundan habersiz veya muaf değildir. Yapılan her geliştirme kaynaklar üzerinde yük oluşturmaktadır.
- Fazladan eklenen her işlev, kendisine ait bir işlemi gerçekleyeceğinden fazladan kaynak tüketecektir.
- Gerekli olanlara hiç kimsenin sözü olamaz ya gereksiz olanlar.
▪ Sadece moda, popüler diye tool, framework kullanmak ne kadar mantıklıdır.
- Gerekli olanlara hiç kimsenin sözü olamaz ya gereksiz olanlar.
ORM tool kavramının ilk yaratıcısı bile JDBC ve SQL bilgisine sahip olmalısınız diyorken sadece sql’den kaçmak için Orm kullanımı yazılıma ihanettir.
Kaynak: Enterprise Java