⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 generichibernatedao.java

📁 网上拍卖系统
💻 JAVA
字号:
package auction.dao.hibernate;import auction.dao.*;import auction.persistence.HibernateUtil;import org.hibernate.*;import org.hibernate.criterion.*;import java.util.*;import java.io.Serializable;import java.lang.reflect.ParameterizedType;/** * Implements the generic CRUD data access operations using Hibernate APIs. * <p> * To write a DAO, subclass and parameterize this class with your persistent class. * Of course, assuming that you have a traditional 1:1 appraoch for Entity:DAO design. * <p> * You have to inject a current Hibernate <tt>Session</tt> to use a DAO. Otherwise, this * generic implementation will use <tt>HibernateUtil.getSessionFactory()</tt> to obtain the * curren <tt>Session</tt>. * * @see HibernateDAOFactory * * @author Christian Bauer */public abstract class GenericHibernateDAO<T, ID extends Serializable>        implements GenericDAO<T, ID> {    private Class<T> persistentClass;    private Session session;    public GenericHibernateDAO() {        this.persistentClass = (Class<T>) ((ParameterizedType) getClass()                                .getGenericSuperclass()).getActualTypeArguments()[0];     }    public void setSession(Session s) {        this.session = s;    }    protected Session getSession() {        if (session == null)            session = HibernateUtil.getSessionFactory().getCurrentSession();        return session;    }    public Class<T> getPersistentClass() {        return persistentClass;    }    @SuppressWarnings("unchecked")    public T findById(ID id, boolean lock) {        T entity;        if (lock)            entity = (T) getSession().load(getPersistentClass(), id, LockMode.UPGRADE);        else            entity = (T) getSession().load(getPersistentClass(), id);        return entity;    }    @SuppressWarnings("unchecked")    public List<T> findAll() {        return findByCriteria();    }    @SuppressWarnings("unchecked")    public List<T> findByExample(T exampleInstance, String... excludeProperty) {        Criteria crit = getSession().createCriteria(getPersistentClass());        Example example =  Example.create(exampleInstance);        for (String exclude : excludeProperty) {            example.excludeProperty(exclude);        }        crit.add(example);        return crit.list();    }    @SuppressWarnings("unchecked")    public T makePersistent(T entity) {        getSession().saveOrUpdate(entity);        return entity;    }    public void makeTransient(T entity) {        getSession().delete(entity);    }    public void flush() {        getSession().flush();    }    public void clear() {        getSession().clear();    }    /**     * Use this inside subclasses as a convenience method.     */    @SuppressWarnings("unchecked")    protected List<T> findByCriteria(Criterion... criterion) {        Criteria crit = getSession().createCriteria(getPersistentClass());        for (Criterion c : criterion) {            crit.add(c);        }        return crit.list();   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -