Hibernate Select Insert Delete İşlemleri

Hibernate ile temel select insert delete gibi crud işlemlerinin nasıl yapılabileceğine bakacağız.bakacağız. Hql sorguları kullanımı,parametreli ve parametresiz sorgular yürütmeyi kayıt silme ve ekleme gibi işlemleri inceleyeceğiz.

Bir entity sınıfı yazdım ve bu sınıfı mysql üzerinde haritaladım. Hibernate kurulumu,mysql e bağlanma,config dosyasını yapılandırma gibi işlemlere buradaki yazımdan ulaşabilirsiniz,bu yazının konusu temel crud işlemleri olacaktır.

Kullanacağımız entity(varlık) sınıfı ve tablo yapısı:

package com.mesutpiskin.modal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="Product")

public class Product {

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="id")
	private int id;
	@Column(name="categoryid")
	private int categoryId;
	
	@Column(name="name")
	private String name;
	
	@Column(name="label")
	private String details;

	@Column(name="price")
	private String price;
	
	@Column(name="url")
	private String url;
	
	@Column(name="icon")
	private String image;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getCategoryId() {
		return categoryId;
	}
	public void setCategoryId(int categoryId) {
		this.categoryId = categoryId;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDetails() {
		return details;
	}
	public void setDetails(String details) {
		this.details = details;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getImage() {
		return image;
	}
	public void setImage(String image) {
		this.image = image;
	}
	
	
}

Silme ve yeni kayıt ekleme metotları:

package com.mesutpiskin.controller;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.mesutpiskin.modal.Product;

public class CrudServicess {

	// Product tipinde verilen objeyi veritabanına ekler
	public void InsertProduct(Product product) {

		// Bir oturum başlatacağız oturumdan önce ise hibernate config dosyamızı
		// belirteceğiz
		@SuppressWarnings("deprecation")
		SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
		Session session = sessionFactory.openSession();

		// Transactionlar
		System.out.println("Transaction başlatıldı.");
		session.beginTransaction();

		// aldığımız nesne kaydedilmesi için gönderildi
		session.save(product);
		session.getTransaction().commit();

		System.out.println("Transaction tamamlandı.");
		System.out.println("Veri kaydedildi.");

		session.close();
		sessionFactory.close();

	}

	// id değeri verilen satırı veritabanından siler
	public void DeleteProduct(int productId) {
		Product productObject;
		// Bir oturum başlatacağız oturumdan önce ise hibernate config dosyamızı
		// belirteceğiz
		@SuppressWarnings("deprecation")
		SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
		Session session = sessionFactory.openSession();

		// Transactionlar
		System.out.println("Transaction başlatıldı.");
		session.beginTransaction();

		productObject = (Product) session.load(Product.class, productId);
		session.delete(productObject);
		session.getTransaction().commit();

		System.out.println("Transaction tamamlandı.");
		System.out.println("VEri silindii.");

		session.close();
		sessionFactory.close();

	}

}

Select işlemi için kullanacağımız sınıf ve metot:

package com.mesutpiskin.controller;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


//Tablo üzerinde select sorgusu yürütür ve tablo verilerini bir list olarak döndürür
public class ListingServicess {

	public List<?> GetListFromTable() {
		@SuppressWarnings("deprecation")
		SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
		Session session = sessionFactory.openSession();

		Query query = session.createQuery("FROM Product");
		List<?> results = query.list();

		return results;
	}

	// Tablo üzerinde select sorgusunu where koşulu ile yürütür ve id değerini
	// verdiğimiz satırı döndürür
	public List<?> GetListById(int id) {

		@SuppressWarnings("deprecation")
		SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
		Session session = sessionFactory.openSession();
		// Hibernate query language sorgusu
		String hql = "FROM Product P WHERE P.id = :id";
		Query query = session.createQuery(hql);
		// id parametresine değerini atıyoruz
		query.setParameter("id", id);
		List<?> results = query.list();
		return results;
	}

}

Bu sınıfları ve metotları kullanabilmek için bir test sınıfı yazalım:

package com.mesutpiskin.controller;

import java.util.List;


import com.mesutpiskin.modal.Product;

public class Test {

	public static void main(String[] args) {
		
		//Parametreli select sorgusu metodumuzu çağıracağız
		//GetListFromTable metodunu çağırsak bize tüm verileri getirecekti yapı olarak aynı metotlar
		ListingServicess listingservices=new ListingServicess();		
		//bize bir list döndürecek ve id olarak da 9 veriyoruz id si 9 olan veriyi döndürecektir
		List<?> liste=listingservices.GetListById(9);	
		for (Object object : liste) {
			//bu veriyi Product entity sınıfımız tipine cast ediyoruz
			Product prodcut=new Product();
			prodcut=(Product)object;
			//sadece adını çağırıyoruz
			System.out.println("ADI:"+prodcut.getName());
			
		}
		
		
		
	}

}