Hibernate frameworkünün Netbeans ortamında kullanılması

Bu yazı Hibernate frameworkünün Netbeans ortamında kullanılmasını basit bir örnekle anlatacakır. Öncellikle Hibernate framework ORM’i sağlayan bi yapıdır. Bu yazıda POJO objeleri ile DB’den verileri alıp jsf sayfalarında gösterilmesini sağlayacaktır. Bu tutorial için gerekli olan programlar NetBeans, JDK, GLASSFish,MYSQL Database Server.
Bu döküman hazırlanırken http://netbeans.org/kb/docs/web/hibernate-webapp.html#01 sitesi referans alınmıştır.

Database oluşturma

Bu yazı boyunca kullanılacak database sakila adlı database. İlk önce databasemizi yaratmamız gerekiyor. Netbeans’imizin MysqlDatabase’i ile bağlanması için eğer önceden mysql bağlantısı yapmamış ise aşağıdaki adımları sırasıyla izlememiz gerekiyor.

Netbeans MySql server bağlantısı

  1. Netbeans’de Services-> Databases sağ tıklayarak Register MySQL seçiyoruz.
  2. Karşımıza çıkan MySQL Server Properties penceresinde gerekli MySQL Server ayarlarımızı giriyoruz.
    Netbeans MySql server bağlantısı

Netbeans ile mysql bağlantımızı sağladıktan sonra netbeans üzerinden sakila DB’mize connect deyip bağlanabiliyoruz.

Web application projesi oluşturma

Hibernate kütüphanelerini kullanacağımız bir web application projesi oluşturmamız gerekiyor. Proje oluşturmak için aşağıdaki adımlar sırasıyla yapılır.

  1. File-> New Project->Java Web-> Web Application seçip next diyoruz.
  2. Project Name kısmına DVDStore yazıyoruz ve projenin bulunmasını istediğimiz klasörleri belirledikten sonra Next diyoruz.
  3. Server kısmında Apache Tomcat veya Glass Fish Server seçilebilir.
  4. Framework seçiminde ekran görüntüleri için JavaServer Faces, DB bağlantı işlemleri içinde Hibernate seçimini yapıyoruz. Aşağıdaki resimde olduğu gibi Hibernate Database Connection seçimini ve JavaServer Face sekmesinde Prime Faces seçimini yapıyoruz.
    Web application projesi oluşturma 

    Web application projesi oluşturma

  5. Eğer sakila Connectionı gözükmüyorsa netbeans’de Services-> Databases kısmından sakile DB’sine connectionj sağlamamız gerekiyor.
  6. Finish diyerek proje oluşturma kısmını tamamlamış oluyoruz.

Hibernate bağlantısı seçtiğimiz için hibernate.cfg.xml ayar sayfası gözükmektedir. Projemizin libraries kısmına baktığımız zaman projemizin genel çatısını oluşturan hibernate , jsf ve primefaces kütüphanelerinin eklendiği gözükmektedir.

Hibernate configuration ayarlarını yapma

SourcePackages->defaultPackages altında database connection ve mapping ile ilgili hibernate configuration ayarlarını içeren hibernate.cfg.xml dosyasını görebiliriz. Bu dosyada bazı ayarlar yapmamız gerekiyor.

  1. Çift tıklayarak hibernate.cfg.xml dosyasını açıyoruz.
  2. Açılan dosya Multi-view Xml editorda açıldığı için Design kısmına geliyoruz.
  3. OptionalProperties altında Configuration Properties kısmında hibernate.show_sql özelliğini true yaparak sql statementların loglarını debug edebileceğiz.
    Hibernate configuration ayarlarını yapma
  4. Miscellaneous Properties sırasıyla hibernate.current_session_context_class value thread ve hibernate.query.factory_class value org.hibernate.hql.classic.ClassicQueryTranslatorFactory seçimini yapıyoruz. Thread seçerek thread başına session kavramını kullanırız. http://docs.jboss.org/hibernate/orm/4.1/quickstart/en-US/html/ch02.html adresinden Hibernate hakkında daha detaylı bilgilere ulaşabiliriz.

HibernateUtil Java helper dosyası oluşturma

Genel olarak Hibernate’in Session objelerini alması için HibernateUtil yardımcı sınıfını eklememiz gerekiyor. Bunun için

  1. Source Packages sağ tıkla New->Other
  2. Categories listesinden Hibernate ve HibernateUtil.javayı seçiyor Next diyoruz. Altında Descriptonda ne işe yarayacağından bahsetmiş.
  3. dvdrental ismini verip finishe basıyoruz.

Hibernate Mapping dosyaları ve Java classları oluşturma

POJO objeleri kullanılarak DB ile mapping işlemini gerçekleştirmiş olacağız.

Hibernate Mapping Files ve database wizarddan gellen POJO objeleri ni kullanmak istiyorsak öncelikle hibernate.reveng.xml dosyasını yaratmamız gerekiyor.

  1. SorucePackages->New-> Other ve hibernate kategorisinden Hibernate Reverse Engineering Wizard seçiyoruz.
  2. Aşağıda seçili olan DB tablolarımızı ekliyoruz.
    hibernate-mapping-files
  3. Finish butonuna tıkladığımız zaman wizard bize hibernate.reveng.xml adında bir dosya oluşturduğunu görürüz.

Hibernate mapping dosyaları ve pojo oluşturma

POJO objelerini yaratmak için Hibernate hibernate.reveng.xml ve hibernate.cfg.xml dosyalarını kullanacak. reveng dosyasını yaratmıştık. Şimdi bunları kullanarak POJO objelerini yaratacağız.

  1. SourcePackages->New->Other -> Hibernate kategorisinden Hibernate Mapping Files ve POJOs from a Database seçiyoruz.
  2. cfg.xml ve hibernate.reveng.xml dosyalarını seçiyoruz.
  3. JDK 5 Language Features Domain Code ve Hibernate XML Mappings yerlerini seçiyoruz.
  4. Package isimini dvdrental seçerek Finishe tıklıyoruz.
    hibernate-mapping-ve-pojo-olusturma
  5. Sınıfların ve her sınıfa ait .hbm.xml dosyalarının oluşturulduğunu göreceksiniz. Ayrıca hibernate.cfg.xml dosyasına da POJO objeleri ile eklentiler geldiğini göreceksiniz. Daha ayrıntılı bilgileri http://docs.jboss.org/hibernate/core/3.3/reference/en/html/persistent-classes.html#persistent-classes-pojo adresinden bulabiliriz.

Filmhelper.java Helper Class oluşturma

Hibernate querylerin çağırılacağı ve java classlarının kullanılacağı Helper classları yaratmamız gerekiyor. Database querylerinin test edilmesi için HQL editoru kullanabiliriz.

Class oluşturma

Film objesini kullanacak ve film ile ilgili işlemleri yapacak FilmHelper.java classını ekliyoruz. Bu java dosyasında session çağırımı için getSessionfactory() fonksiyonunu kullanabilriz.

Orta Doğu Teknik Üniversitesi Bilgisayar Mühendisliği mezunu… IT sektöründe yazılım mühendisi.

2 yorum

  1. Merhaba,
    Her şeyi yapıyorum,
    Hibernate Mapping Files ve POJOs from a Database e tıklayıp gelen pencerede gerekli seçimleri yaptıktan sonra Finish e bastığımda Please wait diyor, bir süre sonra pencere kapanıyor ama entitity classları oluşmuyor.
    Neden olabilir acaba ?

    (Normal jpa ile yaptığımda oluşuyor, db de bir sorun yok yani)

    • Sendeki soruna emin olmamakla birlikte database tablo ve column isimlerinin büyük harfle başlaması bu soruna sebebiyet verebilir onları kontrol etmende fayda olabilir.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.