Hibernate

Hibernate 1 – Giriş @Entity – @Id

Merhaba arkadaşlar. Bu yazı ile birlikte artık Hibernate kodlamaya ufaktan giriş yapıyoruz.

Hibernate Nedir?

Java class’larımızı(POJO) veritabanında ki tablolar ile eşleştirmeye yarayan ve kendine ait HQL sorgu ile daha kolay sorgu yapmamızı sağlayan bir framework’tur.

POJO Nedir?

Pojo -> Plain Of Java Object yani Java Class’larımızın en saf halidir. Aşağıdaki örnekte POJO’yu daha iyi anlayacağız.

 

Bu yazımızda Hibernate’in en temel konusu olan Entity Tanımlaması‘nı ve hangi şartların gerekli olduğunu öğreneceğiz.

En temel hali ile veri tabanımızdaki tablolarımıza karşılık gelen Java sınıflarımız bizim Entity sınıflarımız oluyor. Tablolarımızdaki sütunlar da bu Entity sınıfları içindeki değişkenler ile ifade ediliyor. Bir sınıfın Entity sınıfı olması için olmazsa olmaz 2 kural vardır arkadaşlar. Bunlar:

  • @Entity notasyonunun kullanılmış olması
  • @Id notasyonu kullanarak belirlenmiş bir ayırt edici alanın olmadır.

İlk önce Eclipse’mize Hibernate entegrasyonu yapıcağız ve veritabanı olarak da PostgreSQL kullanacağız ve bu yazımda anlaşılması kolay olsun diye her adımı resimleyerek gösterdim.

İlk önce PostgreSQL ‘ de  Hibernate  adlı bir veritabanı oluşturuyoruz.

 

PosgreSQL Veritabanı 1

 

 

ikinci adım olarak Eclipse IDE miz yapacağımız işi kolaylaştırmak için bize bazı araçlar sunmaktadır. Eclipse üzerinden tablomuza erişmek için Data Source Explorer perspektifini kullanacağız.

Eclipse üzerinden Window -> Show View -> Other -> Data Source Explorer  ekliyoruz.

 

5 Data Service6 Data Service

 

Daha sonra eklediğimiz Data Source Explorer ‘a sağ tıklayarak new diyoruz.

7 Resim

 

PostgreSQL seçiyoruz ve bağlantımıza bir isim veriyoruz ve next diyoruz.

 

8 Resim

 

Eğer daha önceden bağlantı kurmadıysanız yeni bir bağlantı oluşturmak için tıklıyoruz.

9 Resim

Daha sonra varsayılan olarak verilen .jar siliyoruz.

 

10 Resim

https://jdbc.postgresql.org/download.html  Adresinden gerekli olan Jar’ı indirebilirsiniz.

İndirdiğimiz jar Add Jar diyerek bilgisayarımızdan yüklüyoruz.

 

11 Resim

 

 

Daha sonra properties kısmına gelerek veritabanı bilgilerini giriyoruz ve ok tıklıyoruz.

12 Resim

Daha sonra test connection’a tıklayarak bağlantımızı kontrol ediyoruz.

13 Resim

 

Hibernate projemizi maven tabanlı yapacağız.  Hibernate projemizde kullanabilmek için gerekli olan Jar’ları(Kütüphaneleri) otamatik bir şekilde maven sayesinde projemize dahil edeceğiz. İlk önce bir maven projesi açalım.

1 Resim

 

2 Resim

3 Resim

Projemize bir ad veriyoruz.

 4 Resim

 

Daha sonra gerikli Jar’ları indirmek için pom.xml gerekli dependecies leri tanımlıyoruz.

 

18 Resim

 

Ve resimde de görüldüğü gibi gerekli Jar dosyalarını Maven sayesinde otomatik bir şekilde indirmiş olduk.

18.5

 

pom.xml dependecies’lerimiz.

 

Ve sıra geldi bir tane Entity tanımlamaya. En başta belirttiğimiz gibi Entity tanımlayabilmek için 2 tane kuralımız vardı;

  • @Entity notasyonunun kullanılmış olması
  • @Id notasyonu kullanarak belirlenmiş bir ayırt edici alanın olmadır.

Burada Student adında bir Java class’ı oluşturuyoruz.

Bu class’a POJO diyoruz. Sadece Student ve ona ait özellikler mevcut. POJO’larımız da herhangi bir hesaplama doğrulama methodları tanımlamak önerilmez. POJO larımızın saf ve temiz olması kodumuzun bakımınıda kolaylaştırır.

19 Resim

Bir Entity tanımlayabilmek için Java class’ımızın başında @Entity notasyonunu kullanıyoruz.

Ve her Entity içinde bir tane @Id tanımlıyoruz.

Her bir entity bir veritabanındaki tabloya karşılık gelmektedir.

Bu resimden şunu anlayabiliriz. Veritabanın Student adında bir tablo oluşacak ve tablonun stunlarıda burada tanımladığımız instance veriable’lar olucak.

 

 

Şimdide Hibernate için gerekli olan configration dosyamızı ayarlayacağız.

17 Resim

Veritabanımızın PostgreSQL olduğunu belitmek için onun url sini yazdık : org.postgresql.Driver

Daha sonra veritabanımıza ait url, username, password ve PostgreSQL’ e ait dialect sınıfını yazıyoruz.

<property name=”hibernate.hbm2ddl.auto”>create</property> anlamı ise her uygulamamızı çalıştırdığımızda veritabanınından tablomuzu silip baştan oluşturmaktır.

update gibi diğer fonksiyonlarını diğer derslerimizde bahsedeceğim.

 

Diğer bir property’miz ise : <property name=”hibernate.show_sql”>true</property>  uygulamamızı her çalıştırdığımızda consolda veri tabanımıza tabloyu oluşturma ve ekleme işlemleri için oluşan sql sorguları gösterip göstermeyeceğini ayarlıyoruz. True ve false olarak iki fonksiyondan oluşmaktadır.

Bir diğer özelliğimiz  <mapping class=”Student”/>   ise @Entity notasyonunu kullanarak oluşturduğumuz java classlarını burada bildiriyoruz. Her oluşturduğumuz Entity burada bildirmek zorundayız.

 

Daha sonra uygulamamızı test etmek için gerekli olan Main sınıfını oluşturuyoruz.

20 Resim

İlk önce SessionFactory arabirimini oluşturuyoruz. SessionFactory arabirimini oluştururken Configuration nesnesinden yararlanıyoruz ve Hibenate configuration(hibernate.cfg.xml) dosyasını burada SessionFactory nesnesine veriyoruz. SessionFactory nesnesi  Session oluşturmamızı sağlar. Session ile de veritabanımız dan ekleme silme güncelleme gibi işlemler yapmaktayız.

Session nesnesini SessionFactory arabirimindeki openSession() methodu ile Session nesnesini oluşturuyoruz.

 

Session ile veritabanımıza haritalanacak olan nesneleri save ediyoruz ve işlemlerimizin kalıcı olması içinde commit ediyoruz.

 

 

Uygulamamızı çalıştırdığımızda consolda Sql sorgularının oluştuğunu görmekteyiz.

 

21 Resim

 

<property name=”hibernate.show_sql”>true</property>

Eger property’mizi false yapsaydık console’da sql sorgularımızı göremeyecektik.

Ve daha sonra Data Source Explorer’i refresh ettiğimizde tablomuzun oluştuğunu görmekteyiz.

 

22 Resim

 

Aynı şekilde veritabanımıza baktığımızda kayıtlarımızın oraya da eklendiğini görmekteyiz.

 

 

23 Resim

 

 

Bu yazı ile kurulumları bitirmiş olup burada sonlandırıyorum.  Bir sonraki yazıda hızlı bir şekilde kod örnekleriyle ilerleyeceğiz, görüşmek üzere 🙂

 

Dumlupınar Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği 3.sınıf öğrencisiyim.
Bir Java aşığı olarak Java teknolojileri üzerinde kendimi geliştiriyorum.
Adana’lıyım
  • Oğuzhan Filiz

    Eline emeğine sağlık kardeşim

  • Ferhat Aykan

    Hayırlı Olur inşAllah kardeşim

  • Rashid Shiralizade

    Dərslər davamlı olsa çox gözəl olar təşəkkürlər 🙂

  • Emrah Denizer

    Merhaba,
    Tablo ismini değiştirip (student_detail) yeniden deploy ettiğimde eski tablo (student) hala duruyor.Bunu sadece veritabanı arayüzünden mi kaldırabiliriz? hbm2ddl ‘in böyle bir ayarı yok mu?
    Teşekkürler