Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.aptech.model; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; /** * * @author SonVu */ public abstract class AbstractDao { private Session session; private Transaction tx; public AbstractDao() { HibernateFactory.buildIfNeeded(); } public void saveOrUpdate(Object obj) { try { startOperation(); session.saveOrUpdate(obj); tx.commit(); } catch (HibernateException e) { handleException(e); } finally { HibernateFactory.close(session); } } public void save(Object obj) { try { startOperation(); session.save(obj); tx.commit(); } catch (HibernateException e) { handleException(e); } finally { HibernateFactory.close(session); } } public void update(Object obj) { try { startOperation(); session.update(obj); tx.commit(); } catch (HibernateException e) { handleException(e); } finally { HibernateFactory.close(session); } } public void delete(Object obj) { try { startOperation(); session.delete(obj); tx.commit(); } catch (HibernateException e) { handleException(e); } finally { HibernateFactory.close(session); } } public Object find(Class clazz, Integer id) { Object obj = null; try { startOperation(); obj = session.load(clazz, id); tx.commit(); } catch (HibernateException e) { handleException(e); } finally { HibernateFactory.close(session); } return obj; } public List findAll(Class clazz) { List objects = null; try { startOperation(); Query query = session.createQuery("from " + clazz.getName()); objects = query.list(); tx.commit(); } catch (HibernateException e) { handleException(e); } finally { HibernateFactory.close(session); } return objects; } public Integer count(Class clazz) { Long size = null; try { startOperation(); Query query = session.createQuery("select count(*) from " + clazz.getName()); size = (Long) query.uniqueResult(); tx.commit(); } catch (HibernateException e) { handleException(e); } finally { HibernateFactory.close(session); } return size.intValue(); } public List paging(Class clazz, Integer pageNumber, Integer perPage) { List objects = null; try { startOperation(); Query query = session.createQuery("from " + clazz.getName()); query.setMaxResults(perPage); query.setFirstResult(pageNumber); objects = query.list(); tx.commit(); } catch (HibernateException e) { handleException(e); } finally { HibernateFactory.close(session); } return objects; } public void handleException(HibernateException e) throws DataAccessLayerException { HibernateFactory.rollback(tx); throw new DataAccessLayerException(e); } public void startOperation() throws HibernateException { session = HibernateFactory.openSession(); tx = session.beginTransaction(); } }