Genelde bir konuya başlamak için üzerinde denemeler yapabileceğimiz minimum seviyede hazır bişeyler arıyoruz. Çalışabilir olsun, en az seviyede hazır olsun, karmaşık olmasın, vs.. sonra biz onun üzerinde oynayarak devam edelim. O örgünün örneğini birisi çıkarıverse, gerisi kolay 🙂
Yapabildiğim kadar hibernate için öyle bir başlangıç yapmaya çalışayım. Bu belki hibernate’in asıl özelliklerini göstermeyecek bile, ama oraya gitmek için üzerinde deneme yapabileceğiniz bir ortam sağlayabilir. Konfigurasyonlar, annotations’lar, tablo-sinif map’lemeleri, vs… gibi seylere girmiyorum.. sadece bu zımbırtı üzerinden veritabanına erişip bırakıyoruz.
Önce bu aracı kullanabilmek için, normal olarak bu araca ihtiyacınız var 🙂 Buradan ( http://sourceforge.net/projects/hibernate/files/hibernate4/ ) zip dosyasını indirebilirsiniz. Ayrıca hangi veritabanını kullanıyorsanız onun Driver’larına ihtiyacınız olacak. Bunu da ilgili veritabanının sitesinden büyük ihtimalle bulursunuz. Bu jdbc icin kullanacaginiz driver. Sonucta bu aşamanın sonunda elinizde , hibernate ve ilgili veritabanı icin bir takım jar dosyaları olacak.
Burada bahsedecegimiz basit haliyle indirdiginiz zip dosyasını açtığınızda icinden cikan klasorunun icindeki (lib\required) deki jarlar yeterli. Buradaki jarlari ve veritabanı icin gereken jarlari projenizin lib’lerine ekleyin. (Netbeans veya Eclipse de, projenize sağ tıklayıp, menunun altlarındaki Properties’ten açılan yerden bunu yapabilirsiniz. Notepad kullanıyorsanız, buna gerek yok 🙂 )
Şimdi basit deneme kodunu yazmaya geçelim. Basit bir sınıf oluşturup main metodunu aşağıdaki gibi yazarak basit denemenizi yaparsınız.
public static void main(String[] args) {
Configuration conf = new Configuration();
conf.setProperty("hibernate.dialect", "org.hibernate.dialect.DB2Dialect");
conf.setProperty("hibernate.connection.url", "jdbc:db2://100.100.100.100:50000/VT");
conf.setProperty("hibernate.connection.username", "kull");
conf.setProperty("hibernate.connection.driver_class", "com.ibm.db2.jcc.DB2Driver");
conf.setProperty("hibernate.connection.password", "parola");
SessionFactory sesF = conf.buildSessionFactory();
Session ses = sesF.openSession();
List<Object[]> res = ses.createSQLQuery("select * from tablo").list();
System.out.println(" size : " + res.size());
System.out.println(" test : " + res.get(0)[0]);
ses.close();
}
Açıklamalar :
-dialect, driver_class, url deki degerler kullandiginiz veritabanina ozel:
mesela dialect için;
MySQL org.hibernate.dialect.MySQLDialect
MySQL with InnoDB org.hibernate.dialect.MySQL5InnoDBDialect
MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect
Oracle 8i org.hibernate.dialect.Oracle8iDialect
Oracle 9i org.hibernate.dialect.Oracle9iDialect
Oracle 10g org.hibernate.dialect.Oracle10gDialect
gibi..
-conf.buildSessionFactory() depricate olmus bunun yerine bunun parametreli hali gelmiş, bununla ilgili aşağıdaki şeklini deneyebilirsiniz.
-res.get(0)[0] ; tipinden de anladiginiz gibi bu dizi listesi, listede satirlar, dizide de alanlar var. yani mesela, “select isim, soyad, numara ..” demisseniz ve 3. kayittakinin soyadini ogrenecekseniz res.get(2)[1]…
ikinci ornek
public static void main(String[] args) {
Configuration conf = new Configuration();
Map sett = new HashMap();
sett.put("hibernate.dialect", "org.hibernate.dialect.DB2Dialect");
sett.put("hibernate.connection.url", "jdbc:db2://100.100.100.100:50000/VT");
sett.put("hibernate.connection.username", "kull");
sett.put("hibernate.connection.driver_class", "com.ibm.db2.jcc.DB2Driver");
sett.put("hibernate.connection.password", "parola");
ServiceRegistryBuilder srb = new ServiceRegistryBuilder().applySettings(sett);
SessionFactory sesF = conf.buildSessionFactory(srb.buildServiceRegistry());
Session ses = sesF.openSession();
List<Object[]> res = ses.createSQLQuery("select * from tablo").list();
System.out.println(" size : " + res.size());
System.out.println(" test : " + res.get(0)[0]);
ses.close();
}
– bu ikisi arasinda fark, depricate oldugundan dolayi farkli bir metodun kullanilmasi; diger taraftan conf. bilgilerinin veriliş şekli. Bunu farklı şekillerde yapabilirsiniz ve hatta genelde de bu şekilde yapmazsınız. xml veya properties doysasina yazip, onlardan okutarak aktarmak şeklinde kullanırsınız.