Hibernate Ders-10 HQL(Hibernate Query Language)-1
Merhaba arkadaşlar;
Bu yazımda size HQL(Hibernate Query Language) diline giriş yapacağım. Gerekli açıklamaları yapıp bir örnek ile dersi bitireceğim.
HQL nedir? Ne için kullanılır?
HQL, hibernate framework’une ait nesneye dayalı bir sorgu dilidir. Veritabanına bağımsız bir dil ve hibernate arka tarafta bu dili sql koduna çevirir. Bunun haricinde eğer normal sql dilini kullanmak istersek bu dili de kullanabiliriz. İlerideki derslerde göreceğiz.
FROM anahtar kelimesi, tablodaki bütün verileri çeker. Şimdi örneğe geçelim:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.password">19961903</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernateornekler</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <mapping class="ders11_HQL1.Personel"/> </session-factory> </hibernate-configuration> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
package ders11_HQL1; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Personel implements Serializable { /** * */ private static final long serialVersionUID = 1L; private int id; private String isim; private String soyisim; private int maas; public Personel(String isim, String soyisim, int maas) { this.isim = isim; this.soyisim = soyisim; this.maas = maas; } @Id @GeneratedValue(strategy=GenerationType.AUTO) public int getId() { return id; } public void setId(int id) { this.id = id; } public String getIsim() { return isim; } public void setIsim(String isim) { this.isim = isim; } public String getSoyisim() { return soyisim; } public void setSoyisim(String soyisim) { this.soyisim = soyisim; } public int getMaas() { return maas; } public void setMaas(int maas) { this.maas = maas; } } |
Personel sınıfımızı oluşturduk ve @Id değerimizi tanımladık. id değerimiz primary key olarak tanımladık ve otomatik arttırılmasını istedik.
1 2 3 4 5 6 7 |
transaction.begin(); for(int i=1;i<=5;i++) { Personel personel=new Personel("Furkan-"+i, "KOC-"+i, 5000+i); session.save(personel); } transaction.commit(); |
for döngüsü ile 5 adet nesne ekledik ve tabloya kayıt yaptık.
1 2 |
Query query=session.createQuery("From Personel"); List<Personel>personelListesi=query.getResultList(); |
Query sınıfından oluşturduğumuz nesne ile createQuery metodunu kullanarak From cümleciğini kullanarak Personel sınıfından verileri çektik.
1 2 3 4 5 6 7 8 9 |
for(Iterator iterator=personelListesi.iterator();iterator.hasNext();) { Personel personel=(Personel) iterator.next(); System.out.println("Id :"+personel.getId()); System.out.println("İsim :"+personel.getIsim()); System.out.println("Soyisim :"+personel.getSoyisim()); System.out.println("Maaş :"+personel.getMaas()); System.out.println("--------------------------------------------------------------------"); } |
List koleksiyonunu kullanarak query nesnesinden sonuç listesini personelListesine atadık ve döngü ile ekrana yazdırdık.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
package ders11_HQL1; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class Yonetici { public static void main(String[] args) { Configuration configuration=new Configuration(); configuration.configure("ders11_HQL1/hibernate.cfg.xml"); SessionFactory factory=configuration.buildSessionFactory(); Session session=factory.openSession(); Transaction transaction=session.getTransaction(); transaction.begin(); for(int i=1;i<=5;i++) { Personel personel=new Personel("Furkan-"+i, "KOC-"+i, 5000+i); session.save(personel); } transaction.commit(); Query query=session.createQuery("From Personel"); List<Personel>personelListesi=query.getResultList(); for(Iterator iterator=personelListesi.iterator();iterator.hasNext();) { Personel personel=(Personel) iterator.next(); System.out.println("Id :"+personel.getId()); System.out.println("İsim :"+personel.getIsim()); System.out.println("Soyisim :"+personel.getSoyisim()); System.out.println("Maaş :"+personel.getMaas()); System.out.println("--------------------------------------------------------------------"); } } } |
Programı run ettiğimizde console ekranımız :
Personel tablomuz: