03

Ağu

2015

Yeni Başlayanlar İçin Hibernate




Hibernate en çok kullanılan Java ORM araçlarından biridir. Çoğu uygulama verileri depolamak ve ilişkisel veritabanı için JDBC kullanır. JDBC kullanırken tüm işlemler geliştirici tarafından yapılmalıdır. Uygulama içerisinde veri kaybı ve veri tutarsızlığı gibi durumlar olabilir. Bu nedenle ORM kullanmak geliştiriciler için kullanışlı ve daha sağlıklı bir yöntemdir. Bu yazımda Hibernate ORM’yi örnek uygulama ile anlatmaya çalışacağım.

Hibernate Nedir, neden kullanmalıyız gibi sorular için Hibernate Nedir yazıma bakabilirsiniz.

Hibernate Örnek Uygulama

Hibernate ile uygulama geliştirirken 2 set yapılandırma yapmamız gerekmekte. İlk set yapılandırmamızda veritabanı ve session objeleri yaratmak için belirli özellikleri kullanırız. İkinci set ise model sınıfları ile veritabanı tabloları arasındaki ilişkiyi içerir.

Veritabanı bağlantısı için XML tabanlı veya properties tabanlı yapılandırmayı kullanabiliriz. Model sınıfılarımız ile veritabanında bulunan tablolar arasındaki ilişki içinde XML tabanlı veya Annotation tabanlı yapılandırma kullanabiliriz. Örnek projede ikisininde uygulamasını göreceğiz.

Geliştirme sürecinde Intellij Idea kullanıyorum, Maven projesi olarak oluşturuyoruz. Projemizin klasör yapısı aşağıdaki gibi olacak.
bookHibernate

Veritabanı

Veritabanı olarak Mysql kullanıyorum, Book adında bir veritabanı yaratıp, aşağıdaki sql kodları ile de ihtiyacım olan tabloyu yaratacağım.
Book tablomuzda bulunan “id” değeri otomatik olarak Mysql tarafından üretilmektedir. Pom.xml dosyamız projemiz için gerekli olan kütüphaneleri indirmemizi sağlamaktadır. Pom.xml içinde <dependency> tagı içerisinde bu kütüphaneleri belirtiriz. Dosyamız aşağıdaki gibi olacak.

mysql-connector-java Mysql Driver’ı olup Mysql veritabanları ile olan bağlantımızı sağlamaktadır. Farklı bir veritabanı sistemi kullanıyorsanız, driverı ona göre güncellemeniz gerekmekte.

hibernate-core temel hibernate sınıflarını barındırmakta, bu yazımızda kullanacağımız işlemler için gerekmekte.

Hibernate’in gelişimi devam etmektedir. Bu projede 4.3.5.Final versiyonunu kullanacağız.

Domain Model Sınıfı 

Yazının başlarında paylatığım proje klasör yapısında gördüğünüz gibi 2 adet Book sınıfımız bulunmakta. Book ve Book1 olarak adlandırdığım bu sınıflardan Book olanı Xml tabanlı veritabanı eşleştirme yapısına göre hazırlanmış olup, Book1 olan ise annotation tabanlı eşleştirmeye göre ayarlanmıştır. Annotation kullanılan sınıflarda XML ayarlamasına gerek olmayıp, JPA annotationları kullanılmaktadır.

Book.java

Book1.java @Entity annotation ı ile sınıfı Entity olarak işaretleriz. Hibernate tarafından kullanılmasını sağlarız. @Table annotation ı ile model sınıfımız ile veritabanımızdaki tabloyu eşleştiririz. @Id tablomuzdaki primary key imizi tanımlamak için kullanılır. @GeneratedValue otomatik olarak üretilen değerler için kullanılır.

Hibernate XML Tabanlı Haritalama (Hibernate XML Mapping)

Başlıkta belirttiğim gibi Book sınıfımız için Hibernate’in XML tabanlı haritalamasını kullanacağız. Dosya ismi olarak istediğimizi yazabiliriz ama daha anlaşılabilir olması açısından Model sınıfımız ile aynı ismi vermek daha sağlıklı olacaktır. book.hbm.xml dosyamız aşağıdaki gibi olacak.

Hibernate Ayar Dosyaları Hibernate için XML tabanlı ve Annotation tabanlı olmak üzere 2 ayar dosyası oluşturacağız. Kodlardan da görebileceğiniz gibi çoğu satır veritabanı ayarları ile ilgili. Session ve mapping dosyamızı da buradan ayarlayabiliyoruz.   hibernate.cfg.xml

hibernate-annotation.cfg.xml

Hibernate SessionFactory

Hibernate SessionFactory yaratmak ve XML tabanlı olarak oluşturduğumuz ayar dosyamızı kullanabilmek için Util sınıfı oluşturuyoruz. Property tabanlı ayarımızı da daha fazla dosya olmaması için bu snıf içerisinde kullanacağız. Property ayarlaması için yeni bir dosya oluşturup onu da kullanabiliriz.

HibernateUtil.java

SessionFactory yaratırken bazı adımları izlememiz gerekiyor. Configuration objesi yaratıp, yapılandırıyoruz. ServiceRegistry objesi yaratıp configuration a dahil ediyoruz.

Artık test programlarımızı yazıp uygulamamızı deneyebiliriz. XML tabanlı, Annotation tabanlı ve oluşturacağımız bir Java sınıfı içerisinde gerekli ayarları yaparak nasıl kullanacağımıza dair 3 örnek test programı yazacağız.

Hibernate XML Yapılandırma Testi

Hibernate Annotation Yapılandırma Testi 
Hibernate Java Yapılandırma Testi

 

Kısa olarak Hibernate’e giriş yapmış bulunmaktayız. Farklı yapılandırmalar ile birlikte Hibernate’i nasıl kullanacağımızı örnek üzerinde anlatmaya çalıştım.

Proje kodlarına https://github.com/yusufcakmak/HibernateExample bu adresten ulaşabilirsiniz.

About Author

Yusuf Çakmak

Teknoloji ile ilgilenmeyi seven, herhangi bir teknolojiye kendini ait hissetmeyen, zaman buldukça farklı dilleri, kütüphaneleri, cihazları denemeye çalışan kendi halinde biriyim.

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir