Hibernate #1- ORM Kavramına Giriş

Tuğrul Bayrak
4 min readSep 18, 2018

--

Java dünyasının popüler ORM toolu olan Hibernate konusunda yazı serisine başlamaya karar verdim. Ancak Hibernate konusuna girmeden önce anlamamız gereken bazı kavramlar var. ORM’nin neden ortaya çıktığını ve süreci görmeden doğrudan konuya girmeyi doğru bulmuyorum. Bu sebeple biraz meselenin öncesinden başlayacağız.

Günümüz dünyasında verinin(data) önemi her geçen gün artmakta. Artan veriden dolayı bu verileri depolayacak sistemlerde gelişmekte. Bununla birlikte yazılım sektörü de ilerlemekte. Yazılım dünyasında da bu ihtiyaçları karşılamak için sistemler, toollar artmakta. Bizde bu serimizde Java dünyasının popüler ORM aracı(tool) olan Hibernate hakkında bilgi edineceğiz.

C++, Java, C# ve daha birçok farklı programlama dili var. Bir köşede de bu dillerin ortak olarak benimsediği OOP(Nesne Tabanlı Programlama) paradigması yer alıyor. OOP dünyasında ise her şeyi bir nesne (object) olarak düşünmemiz gerekiyor. Bu paradigmayı en iyi benimseyen dillerden biri de Java. Java halen dünyanın en popüler dili konumunda yer alıyor. Bunun en büyük sebeplerinden birisi de tabiki Java’nın saf nesne tabanlı bir dil olması. Şimdi programlama dili tarafında durum bu şekilde. Veri tarafında durumlar ne? Verilerimizi nasıl depoluyoruz? Yazılım geliştirirken verilerimizi yazılımın içerisinde kalıcı olarak barındıramayız. İşte bunun için yıllardan gelen süreçte farklı sistemler gelişmiş ve veritabanları(database) ortaya çıkmış. DBMS(Database Management System) için birçok farklı çözüm ortaya çıkmış ve bunlardan en popüleri ise ilişkisel veritabanları(relational databases). İlişkisel veritabanlarında da firmalar ve communityler kendi veritabanı sistemlerini duyurmuş. Bunlardan bazıları küçük yazılım projeleri için geliştirilmişken, bazıları kurumsal projelere çözüm sunmakta. Popüler veritabanlarından bazıları MySQL, PostgreSQL, SQL Server, Oracle ve diğer yüzlercesi…

Eylül 2018 verilerine göre en popüler 10 veritabanı sistemi

Üstte de görüleceği gibi veritabanı sistemlerinde yalnızca ilişkisel(relational) veritabanları bulunmuyor. NoSQL veritabanları, key-value store, search engine ve daha çok fazlası yer alıyor. Üstte popüler NoSQL veritabanı olan MongoDB’yi görebiliriz. Ancak Hibernate çıkış amacı bir ORM(Object Relational Mapping) toolu olması. Yani çıkış amacı ilişkisel veritabanları. Ancak NoSQL için Hibernate OGM projesi de sonradan eklenmiş. Bu yazı serisinde Hibernate ORM’yi konu alacağız. Ancak yıllar geçtikçe Hibernate popülerliği artmasıyla kendi içerisinde de projelere ayrıldı ve Hibernate OGM, Hibernate Search gibi farklı projeleri de Hibernate dünyasına(galaxy!) dahil etti.

Hibernate official website (hibernate.org)

Mühendisler, yazılım geliştiriciler bu ilişkisel veritabanlarını yönetmek için SQL(Structured Query Language) adında bir sorgulama dili geliştirdiler. SQL bir programlama dili değil, bunu karıştırmamakta da fayda var. Veritabanını yönetmek, veritabanında veriyi kaydetmek, okumak, tabloları oluşturmak ve daha birçok sorguyu SQL ile yapabilmektesiniz. Ancak yazılım dünyasına OOP gibi kavramlar girmeye başladıktan sonra veritabanı sistemlerini de bu paradigmalar ile doğru kullanma ihtiyacı ortaya çıktı. İşte burada ORM toolları devreye girdi.

ORM’ye daha yakından bir bakış

ORM Object Relational Mapping anlamına gelmektedir. ORM toolları nesne tabanlı programlamada bulunan objeler ile veritabanı sistemimizdeki tablolar arasında köprü görevi kurulmasını sağlar. Objeleri ilişkisel veritabanında mapping yapmaya yarar. ORM toollarının kullanımının en büyük avantajı OOP’da yer alan inheritance, polymorphism gibi konseptleri veritabanımız ile kolaylıkla kullanabilmektir. Ayrıca bazı durumlarda projelerde SQL sorguları yazılımcıya büyük yük olabiliyor. Özellikle proje büyüdüğünde bu işlemler zorlaşıyor. ORM toollarından önce yazılımcılar kendileri objeleri veritabanındaki tablolarla eşleştirecek kodlar yazıyorlardı. Hibernate gibi toollar yazılımcıları bu yükten kurtardı. Burada bir not: ORM bu konseptin adıdır, bir araç değildir. Hibernate bir ORM aracıdır ve EclipseLink, OpenJPA, TopLink gibi birçok farklı ORM aracı bulunmaktadır. Hibernate, Java dünyasındaki popüler ORM araçlarından biridir.

Java projemiz içerisinde yer alan Entity class
Veritabanımızda yer alan Students tablosu

ORM’nin yaptığını yukarıdaki görselle pekiştirelim ve yazımızı bitirelim. Bu yazıda ORM’nin neden ortaya çıktığını ve ne olduğunu anlamaya çalıştık. Bundan sonraki yazılarda daha teknik konulara değineceğiz. Hibernate kurulumuna ve basitten ileri seviyeye kullanımına bakacağız. Benimle Linkedin üzerinden bağlantı kurabilirsiniz. Sonraki yazıda görüşmek üzere.

Java konulu diğer yazılar:

--

--