Hibernate Ders-3 Kayıt(Save()),Güncelleme(Update()) Ve Silme(Delete()) İşlemleri
Merhaba arkadaşlar
Bu yazımda Hibernate de veri kayıt(İnsert), veri güncelleme(Update), veri silme(Delete) işlemlerini örnek üzerinden anlatacağım.
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 |
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="Hibernate_Ders3_SaveDeleteUpdate" transaction-type="RESOURCE_LOCAL"> <class>com.furkan.pojo.Personel</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/hibernateornekler"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="19961903"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="hibernate.ejb.cfgfile" value="hibernate.cfg.xml"/> </properties> </persistence-unit> </persistence> |
Persistence.xml dosyamızda Hibernate ayar dosyası ve veritabanı bağlantı bilgilerimiz mevcuttur.
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="com.furkan.pojo.Personel"/> </session-factory> </hibernate-configuration> |
Hibernate ayar dosyamızda veritabanı bağlantı bilgilerimiz mevcuttur.
hibernate.show_sql => Yapılan sql sorgusunun console ekranında gösterilmesini sağlıyor.
hibernate.hbm2ddl.auto => Eğer veritabanımızda kalıcı sınıflarımıza ait tablolar bulunmuyorsa oluşturuyor ve daha sonra üzerinde güncelleme yapıyor.
mapping class => Kalıcı sınıflarımızı tanımlıyoruz.
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 |
package com.furkan.pojo; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity // Sınıfımızı kalıcı hale getiriyor @Table(name="Personel_Maas") //Tablo özelliklerimizi belirliyoruz biz tablomuza name özelliği ile isim verdik. public class Personel implements Serializable { private Integer id; //id değişkeni private String isim; //İsim değişkeni private String soyisim; //soyisim değişkeni private Integer maas; //maas değişkeni public Personel() { //Parametresiz yapıcımız } public Personel(String isim, String soyisim, Integer maas) //Parametreli yapıcımız { this.isim = isim; this.soyisim = soyisim; this.maas = maas; } @Id // ID değerimizi belirtiyoruz @GeneratedValue(strategy=GenerationType.AUTO) //id değerimizin otomatik artacağını strateji olarak belirtiyoruz public Integer getId() { return id; } public void setId(Integer 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 Integer getMaas() { return maas; } public void setMaas(Integer maas) { this.maas = maas; } } |
Personel.java pojo sınıfı bizim kalıcı sınıfımızdır.
@GeneratedValue => Annotasyonu bizim sütunumuza primary key(Birincil Anahtar) özelliğini verir.
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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
package com.furkan.yonetici; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.furkan.pojo.Personel; public class Yonetici { SessionFactory factory=new Configuration().configure().buildSessionFactory(); //SessionFactory Nesnesi Üretildi Session session=factory.openSession(); //Session Nesnesi Üretildi Transaction transaction=session.getTransaction(); //Transaction Nesnesi Üretildi public static void main(String[] args) //Main Method { Yonetici yonetici=new Yonetici(); yonetici.kayit("Furkan","KOC",5250); //Veritabanına Kayıt Ekleniyor //yonetici.sil(1); //Girilen id değerindeki kayıt siliniyor //yonetici.guncelle(2, 8999); // Girilen id değerinde bulunan kayıdın maaşı güncelleniyor } public void kayit(String isim,String soyisim,Integer maas) { Personel personel=new Personel(isim,soyisim,maas); try { transaction.begin(); session.save(personel); transaction.commit(); } catch (Exception e) { System.out.println("Verileri Kaydetmede Hata Var :"+e.toString()); transaction.rollback(); } finally { session.close(); } } public void sil(Integer id) { try { transaction.begin(); session.delete(session.get(Personel.class, id)); transaction.commit(); } catch (Exception e) { System.out.println("Verileri Güncellemede Hata Var :"+e.toString()); transaction.rollback(); } finally { session.close(); } } public void guncelle(Integer id,Integer maas) { Personel personel=new Personel(); try { personel=session.get(Personel.class, id); personel.setMaas(maas); transaction.begin(); session.update(personel); transaction.commit(); } catch (Exception e) { System.out.println("Verileri Güncellemede Hata Var :"+e.toString()); transaction.rollback(); } finally { session.close(); } } } |
İlk başta tablo olmamasına karşın tabloyu oluşturuyor ve kaydı başarılı bir şekilde kayıt ediyor.
Console ekranımızda görüldüğü üzere SQL kodları gözüküyor.
Silme ve güncelleme işlemlerini yorum satırından çıkarınca işlemleri başarılı bir şekilde yapıyor….