Bu makalemde Hibernate framework ' u, konfigürasyonları, database ile etkileşimi, veri kaydedilmesi ve getirilmesi işlemlerini anlatmaya çalışacağım.
Kullanılan araçlar:
NetBeans IDE, Hibernate Framework, JDB (Java DB)
Java DB için derbyclient.jar kütüphanemizi ekleyelim.
Hibernate hakkında detaylı bilgiye daha önceki makalemizden
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
TEST Tablosu
ID
Name
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
İlk olarak NetBeans'te Standart bir Konsol uygulaması açalım. Adını Hibernate koydum ve ardından aşağıdaki resimlerdeki gibi Hibernate kütüphaneleri ekleyelim.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Şimdi, Hibernate framework'umuzun konfigürasyon ayarlarını yapalım. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Sonra, HibernateUtil class'ımızı Hibernate framework'ü üzerinden aşağıdaki resimlerdeki gibi üretelim. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Sonra, HibernateUtil class'ımızı Hibernate framework'ü üzerinden aşağıdaki resimlerdeki gibi üretelim. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Daha sonra, Hibernate Reverse Engineering Wizard ile Reveng.xml'imizi üretelim. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Şimdi sıra POJO(Plain Old Java Object) 'yu kullanarak Database Tablomuz ile Java sınıfı arasındaki ilişkiyi xml üzerinde mapping yani eşleştirme işlemi için Database tablomuz TEST yani Test.hbm.xml'i üretmeye. Xml ile birlikte Test sınıfımızda Hibernate framework'u sayesinde otomaik olarka üretilecektir. Üretilen Test sınıfı klasik bir Java Bean'dir. Java Bean ile ilgili makale ve diğer Java class'larından farkına buradan [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].
Şimdi sırasıyla,
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]yapısındaki Controller mekanizmasının basit bir örneği, Database sınıf objemiz Test ile HibernateUtil sınıfının ilişkisi ile verileri datastructure (List,ArrayList) ile modelliyoruz. Verilerin listelenmesi ve veri kaydedilmesi işlemleri, bu sınıf içinde yapıyoruz.
DataController.java sınıfımız. PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Controller;
import Model.HibernateUtil;
import Model.Test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
*
* [MENTION=21475]AuthoR[/MENTION] turgay
*/
public class DataController {
public List listCourses() {
//session değerine Hibernate'ın Factory'ı şemasından açılan database session'ının atanması
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;//transaction(hibernate)
Test course = new Test();//pojo objesinin oluşturduğu Test sınıfı
List val = new ArrayList();
try {
transaction = session.beginTransaction();//session objesini transaction objesine atamak
List courses = session.createQuery("from Test").list();//query'den dönen sonuçları List içine doldurmak
for (Iterator iterator = courses.iterator(); iterator.hasNext();) {
course = (Test) iterator.next();
val.add(course);//Donen degerleri Test objesine cast edip, list içine atama
}
transaction.commit();//baglantıyı commit etmek
} catch (HibernateException e) {
transaction.rollback();//hata oluşursa baglantıdaki değerleri rollback ile geri almak
e.printStackTrace();
} finally {
session.close();//baglantıyı kapatmak
return val;
}
}
public Integer saveCourse(Integer id,String courseName) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
Integer courseId = null;
try {
transaction = session.beginTransaction();
Test course = new Test();
course.setName(courseName);
course.setId(id);
courseId = (Integer)session.save(course);
transaction.commit();
System.out.println(course.getId() + " " + course.getName() + " kaydedildi.");
} catch (HibernateException e) {
transaction.rollback();
e.printStackTrace();
} finally {
session.close();
}
return courseId;
}
}
Implementasyon sınıfı
TestHibernate.java PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Implementation;
import Controller.DataController;
import Model.Test;
import java.util.List;
/**
*
* [MENTION=21475]AuthoR[/MENTION] turgay
*/
public class TestHibernate {
/**
* [MENTION=81769]para[/MENTION]m args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
DataController mt = new DataController();//DataController sınıfımızdan mt objesi türettik. Diğer adı ile kompozisyon
List<Test> courses = mt.listCourses(); //listCourses metoduyla List dönen değerleri Data Model'imize atıyoruz.
//mt.saveCourse(6, "Hibernate"); //Yeni ders kaydediyoruz.
System.out.println(" ID " + " NAME");
for (Test object : courses) {//Data Model'imizde listemizdeki değerleri yazdırıyoruz.
System.out.println(object.getId() + " "+object.getName());
}
}
}
İşlemlerin sonuç ekranları :
Kaydetmek Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Listelemek Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Uygulama ve anlatım tamamı ile bana aittir. Önce kendi websitemde ve devamında wardom'da paylaşmaktan keyif duyarım
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Bir sonraki makalem, JSF (view framework) çatısı ile Hibernate (database model framework) çatısının beraber kullanımı olacaktır. Örnek bir web uygulamasıda içinde olacaktır.
Saygılarımla.
Turgay Can