Hibernate Dersleri 4 – Kaydetme İşlemi
Hibernate Dersleri‘nde CRUD işlemlerine giriş yapacağız. Bu yazıda Hibernate ile veritabanına bir kayıt işlemi gerçekleştirmeden bahsesedeğim.
Önceki Hibernate Derslerinde Mapping konusunu işlerken Java sınıfımızı oluşturmuştuk. Veritabanımıza bu Pojo sınıfını kullanarak kayıt işlemini gerçekleştireceğiz. Aynı Java sınıfımızı buraya yazalım.
public class Kisi implements Serializable{ private long kisiId; private String kisiAdi; private String kisiSoyad; public long getKisiId() { return kisiId; } public void setKisiId(long kisiId) { this.kisiId = kisiId; } public String getKisiAdi() { return kisiAdi; } public void setKisiAdi(String kisiAdi) { this.kisiAdi = kisiAdi; } public String getKisiSoyad() { return kisiSoyad; } public void setKisiSoyad(String kisiSoyad) { this.kisiSoyad = kisiSoyad; } }
Java sınıfımız bu ve biz Hibernate ile kişi bilgilerini veritabanımıza kaydedeceğiz. Bu sınıfımızı oluşturalım ve detaylarına sonra bakalım.
Kisi kisi=new Kisi(); kisi.setKisiAdi("Burak"); kisi.setKisiSoyad("Kutbay"); Session session = hibernateUtil.getSessionFactory().openSession(); Transaction transaction = session.beginTransaction(); session.save(kisi); transaction.commit(); session.close();
Yukarıda gördüğünüz bu işlem sayesinde Hibernate kullarak kolay bir şekilde veritabanına kayıt işlemini gerçekleştirmekteyiz. Peki ne yaptık bunu açıklayalım. Görüleceği üzere Kisi sınıfından bir instance yaratarak veritabanımıza kaydetmek istediğimi verileri değişkenlerimize setledik.
Ardından önceki derslerde gördüğümüz Session İşlemi için (Hibernate Dersleri 3 Session İşlemleri) oturum açtık. Bu oturum yardımı ile veritabanı bağlantı işlemi gerçekleşmekte. Önceki derste detayları görebilirsiniz. Transaction yönetimini sağlayabilmek için sessionumuzu transactional olarak yönetilebilir bir hale getirmekteyiz. Hatalı bir durum olduğunda veri kaydetme işlemini bu sayede geri alarak tüm işlemlerin sağlıklı olarak çalışmasını sağlamaktayız.
Bu işlemlerin ardından Kisi sınıfımızdaki verileri Hibernate yardımı ile kaydetmek isterken kullanacağımız kod yapısı 7. satırda işaretlemiş olan session.save(Kisi) bloğudur. Biz verilerimizi bu yapı ile gönderiyoruz. Sınıfımızı yollayarak veritabanımıza o ilgili alanların kaydedilmesini sağlamaktayız. Kaydetme işleminden sonra başka bir işlemimiz yoksa transaction işlemi yardımı ile verilerimizin kaydını sağlıyoruz ve oturumumuzunu session.close() diyerek kapatarak. Verilerimizi Hibernate kullanarak kaydetme işlemini bitiriyoruz.
Önceki : Session İşlemleri | Hibernate Dersleri | Sonraki: Silme İşlemleri |
Merhabalar,
spring boot servis işleminde genel transaction kullanımına ihtiyacım var.
@Transactional annotation ile metod içinde işlemlerin tamamı düzgün ise otomatik commit değilse rollback olur deniliyor fakat bu şekilde çalışmıyor.
Örnek metod içinde 1 adete header ve 10 adet kayıt olan line tablolarım var
@Transactional genel olarak çalışmıyor aşağıdaki verdiğim örnekte header kayıt edilmiş linelarda 2 satır kayıt ediliyor kalanlar edilmiyor. Yani line kayıt edilirken bir hata varsa o ana kadar yapılan tüm işlemler geri alınmalı. Kayıt edilen header ve kayıt edilebilen line saıtlarıda rollback olsun istiyorum.
try {
burada genel transaction başlamalı.
headerRepo.Save(headerEntity);
headerID=headerEntityId;
for …
lineEntity.setHeaderId(headerID);
lineRepo.save(lineEntity)
each;
sorun yoksa burada commit olmalı
}
catch () {
sorun varsa herşey rollback olmalı
}