`
Blackbaby
  • 浏览: 185020 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

简化版Abstract Hibernate DAO

阅读更多
public abstract class AbstractHibernateDAOImpl<T extends Serializable, KeyType extends Serializable> extends HibernateDaoSupport {

    protected Class<T> domainClass = getDomainClass();
    /**
     * Method to return the class of the domain object
     */
    protected abstract Class<T> getDomainClass();

    @SuppressWarnings("unchecked")
    public T load(KeyType id) {
        return (T) getHibernateTemplate().load(domainClass, id);
    }

    public void update(T t) {
        getHibernateTemplate().update(t);
    }

    public void save(T t) {
        getHibernateTemplate().save(t);
    }

    public void delete(T t) {
        getHibernateTemplate().delete(t);
    }

    @SuppressWarnings("unchecked")
    public List<T> getList() {
        return (getHibernateTemplate().find("from " + domainClass.getName() + " x"));
    }

    public void deleteById(KeyType id) {
        Object obj = load(id);
        getHibernateTemplate().delete(obj);
    }

    public void deleteAll() {
        getHibernateTemplate().execute(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException {
                String hqlDelete = "delete " + domainClass.getName();
                int deletedEntities = session.createQuery(hqlDelete).executeUpdate();
                return null;
            }

        });
    }

    public int count() {
        List list = getHibernateTemplate().find("select count(*) from " + domainClass.getName() + " x");
        Integer count = (Integer) list.get(0);
        return count.intValue();
    }

	@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")
    protected List<T> findByCriteria(Criterion... criterion) {
        Criteria crit = getSession().createCriteria(getPersistentClass());
        for (Criterion c : criterion) {
            crit.add(c);
        }
        return crit.list();
   }

}

 

分享到:
评论

相关推荐

    Struts2、Spring和Hibernate应用实例

    接下来,我们可以继续构建更多的组件和服务层,例如Service层、DAO层等,同时也可以编写具体的Action类,来处理不同的请求。此外,还需要配置Spring的bean文件,以及Hibernate的相关配置文件,确保各个框架之间能够...

    Struts2.1.6+Hibernate3.3.2+Spring2.5.5+Extjs3.0.0+Annotations

    public abstract class BaseServiceForHibernate&lt;T&gt; extends HibernateDaoSupport { // ... 类的具体实现细节 } ``` 通过以上步骤,我们可以成功地构建一个集成了Struts2、Hibernate、Spring和Extjs的开发框架,为...

    ssh(structs,spring,hibernate)框架中的上传下载

     需要指定的是Spring 1.2.5提供了两套Hibernate的支持包,其中Hibernate 2相关的封装类位于org.springframework.orm.hibernate2.*包中,而Hibernate 3.0的封装类位于org.springframework.orm.hibernate3.*包中,...

    UML设计模式

    ### UML设计模式详解 #### 一、UML概述与历史沿革 UML,即统一建模语言(Unified Modeling ...通过以上代码示例,可以看到抽象工厂模式如何简化了对多个DAO对象的创建和管理,同时也提高了代码的可测试性和可维护性。

    SSH三大框架应用实例

    public abstract class AbstractAction extends ActionSupport { // 可以在这里定义所有Action类公用的方法和属性 // 例如:初始化方法、错误处理等 } ``` #### 四、具体实现 接下来,我们将详细介绍如何使用...

    Spring的面试题和答案

    - **JDBC Abstract and DAO Module**: 提供了一种简单的方法来编写健壮的JDBC代码,避免了常见的错误,如未能正确关闭数据库资源。它还提供了一个统一的异常层次结构,使开发者能够处理特定的技术异常。 #### 8. ...

    达内培训笔记

    JavaEE(Java Platform, Enterprise Edition),是Java平台的企业版,主要用于构建分布式、多层的企业级应用程序。它是一个开放标准,由Java社区进程(JCP)制定,Oracle公司作为主要维护者。JavaEE的核心是提供一组...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    11.1.3 使用Abstract Factory模式的DAO模式 209 11.2 实现DAO模式 209 11.2.1 DAO接口和DAOBase类 210 11.2.2 EmployeeDAO类 213 11.2.3 EmployeeDAOMySQLImpl类 214 11.2.4 DAOFactory类 218 11.2.5 Employee...

    JAVA经典面试题

    例如,在创建控件时使用工厂模式,简化了代码并提高了可维护性。 #### 八、大数据日志处理 对于数以亿计的日志查询,可以采用以下几种策略: 1. **存储过程**:利用数据库中的存储过程来处理复杂的查询逻辑,提高...

    cms后台管理

    Jeecms是基于Spring注解,在自定义标签时对于实体类和dao service等注意注解的问题。 五 自定义标签及使用自己创建的表的实现过程 下面是我自己定义的标签mycontent_list 首先,在数据库里创建了一个jc_...

Global site tag (gtag.js) - Google Analytics