Bu hafta bir önceki yazımda bahsettiğim Mapping kavramı ve one-to-one(1-1) XML Mapping yapısı için oluşturduğumuz uygulamamıza devam edeceğiz. Önceki yazımızda POJO sınıflarımızı ve XML mapping dosyalarımızı oluşturmuştuk. Bu hafta ise yeni bir işçi ve 1-1 ilişkide ona karşılık gelen adresin eklenmesi ve işçi bilgilerinin güncellenmesi gibi konuların üzerinde duracağız. Tüm bu işlemleri yapmak için öncelikle "Uygulama" adında yeni bir class oluşturuyoruz.
public class Uygulama {
private static SessionFactory factory;
public static void main(String[] args) {
// hibernate.cfg.xml dosyasındaki ayarlara ait bir session factory yaratıyoruz.
factory = new Configuration().configure().buildSessionFactory();
//üzerinde işlem yapabilmek için bulunduğumuz sınıftan bir nesne oluşturuyoruz.
Uygulama obj = new Uygulama();
//yeni bir işçi ve ona ait olan adres eklemek için aşağıda oluşturdurduğumuz adresEkle() ve isciEkle() methodlarına parametre gönderiyoruz.
Adres adres1= obj.adresEkle("Yenibaglar","Eskisehir","26000");
Integer isciId1 = obj.isciEkle("Ali", "Ak", 2500, adres1);
Adres adres2= obj.adresEkle("Şirintepe","Eskisehir","26000");
Integer isciId2 = obj.isciEkle("Veli", "Al", 1500, adres2);
obj.isciMaasGuncelle(isciId1,3000); //yukarıda oluşturduğumuz "Ali Ak" isimli işçinin maaşını 3000 olarak güncellemek için isciMaasGuncelle() methoduna işçinin id'si ile yeni maaş değerini gönderiyoruz.
//veritabanımızda bulunan Adres tablomuza yeni bir kayıt ekleme için adresEkle() methodu oluşturduk.
public Adres adresEkle(String mahalle, String sehir, String postakodu) {
//daha önceden oluşturduğumuz session factory üzerinde yeni bir session açıyoruz.
Session session = factory.openSession();
Transaction trans = null;
Integer adresId = null;
Adres adres = null;
try{
trans = session.beginTransaction(); //açtığımız sessionda transaction işlemini başlatıyoruz.
//yeni bir adres ekleyeceğimiz için Adres nesnesi oluşturuyoruz
adres = new Adres(mahalle, sehir, postakodu);
//oluşturduğumuz adres nesnesini sessiona kaydediyoruz.
adresId = (Integer)session.save(adres);
//veritabanında yeni bir adres kaydı eklenmesi için transaction işlemimizi veritabanına gönderiyoruz.
trans.commit();
}catch (HibernateException e) {
//eğer transaction sırasında bir hata oluşursa yapılan değişikliği geri almak için rollback yapıyoruz.
if (trans!=null) trans.rollback();
e.printStackTrace();
}finally {
session.close(); //işlemimizi bitirdikten sonra daha önceden açtığımız sessionı kapatıyoruz.
}
return adres;
}
Yeni bir adres bilgisi eklemek için yaptığımız işlemlerin aynısını yeni bir işçi eklemek içinde yapıyoruz. Yeni bir işçi eklemek için isciEkle() methodunu oluşturuyoruz.
public Integer isciEkle(String ad, String soyad, int maas, Adres adres){
Session session = factory.openSession();
Transaction trans= null;
Integer isciId = null;
try{
trans= session.beginTransaction();
Isci isci = new Isci(ad, soyad, maas, adres);
isciId = (Integer) session.save(isci);
trans.commit();
}catch (HibernateException e) {
if (trans!=null) trans.rollback();
e.printStackTrace();
}finally {
session.close();
}
return isciId;
}
Şimdiye kadar yeni bir işçi ve ona ait adres bilgisini oluşturduk ve veritabanımıza ekledik. Peki şimdi de veritabanımıza kaydettiğimiz işçilerin maaşlarını güncelleyelim.
public void isciMaasGuncelle(Integer IsciId, int maas){
Session session = factory.openSession();
Transaction trans= null;
try{
trans = session.beginTransaction();
Isci isci = (Isci)session.get(Isci.class, IsciId);
isci.setMaas(maas); //yeni maaş değerini atayalım.
session.update(isci); //işçi nesnemizi güncelleyelim.
trans.commit(); //yaptığımız değişikliği veritabanına gönderelim.
}catch (HibernateException e) {
if (trans!=null) trans.rollback();
e.printStackTrace();
}finally {
session.close();
}
}
}
}Bugünkü uygulamamızda daha önceden eşleme(mapping) işlemini yaptığımız tablolara yeni kayıt ekleme ve kayıt güncelleme işlemlerini gerçekleştirdik. Bir sonraki yazımda görüşmek üzere...
Hiç yorum yok:
Yorum Gönder