Odak modu

Java Spring

Hibernate ile CRUD İşlemler

Hibernate üzerinden veritabanı işlemlerini sessionlar aracılığıyla yönetebiliriz. Bu konuda Hibernate, JPA (Java Persistence API) uyguladığı için veritabanıyla olan sınıf nesne ilişkilerimizi entity sınıfları aracılığıyla yapıyoruz. Önceki bölümde oluşturduğumuz "Customer" entity sınıfını projemize dahil ettik.

Hibernate kullanımında, temel işlemler genellikle session ve transaction kullanarak gerçekleştirilir. Örneğin, bir transaction başlatmak için "session.beginTransaction()" kullanılır. Daha sonra, işlemler başarılı bir şekilde gerçekleşirse "transaction.commit()" yapılır, hata durumunda ise "transaction.rollback()" ile geri alınır. Son olarak, "session.close()" ile session kapatılır.

Aşağıda, temel bir işlem adımı sırasını içeren bir örnek bulunmaktadır:

try {
  // Session başlatma ve transaction başlatma
  Session session = sessionFactory.openSession();
  Transaction transaction = session.beginTransaction();

  // Veritabanı işlemleri burada gerçekleştirilir

  // Transaction'ı commit etme
  transaction.commit();
} catch (Exception e) {
  // Hata durumunda transaction'ı geri al ve exception yazdır
  if (transaction != null) {
    transaction.rollback();
  }
  e.printStackTrace();
} finally {
  // Session'ı kapat
  if (session != null) {
    session.close();
  }
}

Bu örnekte, veritabanı işlemleri try bloğu içinde gerçekleştirilmekte ve bir hata durumunda catch bloğu içinde işlemler geri alınmaktadır. Son olarak, finally bloğunda ise session kapatılmaktadır.

Entity sınıflarını Hibernate'e tanıtmak için, configure kısmında "ADD annotated Class" ile ilgili sınıfların belirtilmesi gerekir. Bu örnekte, "Customer" entity sınıfını eklemek için "ADD annotated Class Customer" ifadesini kullanmıştır.

Ayrıca, veritabanına kayıt eklemek, güncellemek veya silmek için "session.persist()", "session.update()" ve "session.remove()" gibi yöntemler kullanılır. Örneğin:

Customer customer = new Customer();
customer.setName("Test");
customer.setGender(Customer.GENDER.FEMALE);
customer.setCreationDate(LocalDate.now());
customer.setMail("[email protected]");

try {
  Session session = sessionFactory.openSession();
  Transaction transaction = session.beginTransaction();

  // Veritabanına kayıt ekleme
  session.persist(customer);

  // Transaction'ı commit etme
  transaction.commit();
} catch (Exception e) {
  // Hata durumunda transaction'ı geri al ve exception yazdır
  if (transaction != null) {
    transaction.rollback();
  }
  e.printStackTrace();
} finally {
  // Session'ı kapat
  if (session != null) {
    session.close();
  }
}

Bu örnekte, yeni bir "Customer" nesnesi oluşturulmuş ve veritabanına eklenmiştir.

Hibernate Query Language (HQL) ile veritabanından veri çekmek için "session.createQuery()" kullanılır. Örneğin:

List<Customer> customers = session.createSelectionQuery("FROM Customer", Customer.class).getResultList();

Bu ifade ile tüm müşteri verilerini liste olarak çekebilirsiniz. Ayrıca, tek bir kayıt çekmek için "getSingleResult()" kullanılabilir ve olmayan bir kayıt durumunda "NoResultException" alınabilir.

Bu temel bilgiler doğrultusunda Hibernate'in veritabanı işlemlerini yönetme sürecini anlamış olduk. İlerleyen bölümlerde daha fazla detay ve örnek göreceğiz. 

Background Pattern
Birlikte öğrenelim

Sektörde en çok aranan yazılım becerilerini kazan

Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.

Yunus Emre Kabakcı

Patika+ mezunu

Patika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,

3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!


“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!