package hamaster.gradesign.dao.impl; import hamaster.gradesign.dao.DAO; import java.io.Serializable; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.SessionFactory; public abstract class DAOSupport implements DAO { protected SessionFactory factory; protected DAOSupport() { } @Override public <T> T get(Class<T> entityClass, Serializable primaryKey) { Session session = factory.openSession(); @SuppressWarnings("unchecked") T t = (T) session.get(entityClass, primaryKey); return t; } @Override public <T> List<T> list(Class<T> entityClass, int page, int amount) { Session session = factory.openSession(); Criteria criteria = session.createCriteria(entityClass); if (amount > 0) { criteria.setFetchSize(amount); criteria.setFirstResult(page * amount); } @SuppressWarnings("unchecked") List<T> r = criteria.list(); return r; } @Override public void add(Object entity) { Session session = factory.openSession(); session.beginTransaction(); session.save(entity); session.getTransaction().commit(); if (session.isOpen()) session.close(); } @Override public void update(Object entity) { Session session = factory.openSession(); session.beginTransaction(); session.merge(entity); session.getTransaction().commit(); if (session.isOpen()) session.close(); } @Override public void delete(Object entity) { Session session = factory.openSession(); session.beginTransaction(); session.delete(session.merge(entity)); session.getTransaction().commit(); if (session.isOpen()) session.close(); } public void setFactory(SessionFactory factory) { this.factory = factory; } }