package com.yf.kp.service.impl; import com.yf.kp.service.AbstractService; import com.yf.kp.utility.HibernateUtil; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.hibernate.Criteria; import org.hibernate.HibernateException; /** * * @author BlackCode * @param <T> */ public abstract class AbstractServiceImpl<T> extends HibernateUtil implements AbstractService<T> { protected Class<T> model; public AbstractServiceImpl(Class<T> model) { this.model = model; } @Override public void save(T t) throws HibernateException { connect(); try { manager().persist(t); commit(); } catch (HibernateException ex) { rollback(); throw ex; } finally { close(); } } @Override public void update(T t) throws HibernateException { connect(); try { manager().merge(t); commit(); } catch (HibernateException ex) { rollback(); throw ex; } finally { close(); } } @Override public void delete(Object kode) throws HibernateException { connect(); try { T t = (T) manager().get(model, (Serializable) kode); manager().delete(manager().merge(t)); commit(); } catch (HibernateException ex) { rollback(); throw ex; } finally { close(); } } @Override public T findOne(Object kode) throws HibernateException { T t = null; connect(); try { t = (T) manager().get(model, (Serializable) kode); commit(); } catch (HibernateException ex) { rollback(); throw ex; } finally { close(); } return t; } @Override public List<T> findAll() throws HibernateException { List<T> list = new ArrayList<>(); connect(); try { Criteria c = manager().createCriteria(model); list = c.list(); commit(); } catch (HibernateException ex) { rollback(); throw ex; } finally { close(); } return list; } @Override public List<T> findAll(int halaman, int banyakBaris) throws HibernateException { List<T> list = new ArrayList<>(); connect(); try { Criteria c = manager().createCriteria(model); list = c.setFirstResult(banyakBaris * (halaman - 1)).setMaxResults(banyakBaris).list(); commit(); } catch (HibernateException ex) { rollback(); throw ex; } finally { close(); } return list; } }