例子是根据博友的例子改的。保留原作者名。并留以自用!
(项目:spring2.1 + struts1.2 + hibernate3.2 的文件上传下载,源码请下载附件)
1.1. 基类:扩展HibernateDaoSupport
扩展一下HibernateDaoSupport,可以添加自己的辅助方法,以使下面的泛型实现类代码更简洁清晰。
package com.ssh.core.dao.support;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
@SuppressWarnings("unchecked")
public class HibernateGenericDao extends HibernateDaoSupport {
//……
}
1.2. 接口:GenericDao
定义泛型接口:
package com.ssh.core.dao;
import java.io.Serializable;
import java.util.List;
public interface GenericDao<T> {
public void save(Object o);
void delete(Object o);
void deleteById(Serializable id);
public void update(Object o);
public void saveOrUpdate(Object o);
public T getById(Serializable id);
public List<T> findAll(Class<T> entityClass);
public List<T> findByExample(Object o);
//...
}
1.3. 实现:GenericDaoImpl
定义泛型类的实现:
package com.ssh.core.dao.impl;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.springframework.util.Assert;
import com.ssh.core.dao.GenericDao;
import com.ssh.core.dao.support.HibernateGenericDao;
@SuppressWarnings("unchecked")
public class GenericDaoImplHibernate<T> extends HibernateGenericDao implements GenericDao<T>{
protected Class<T> entityClass;
public GenericDaoImplHibernate() {
entityClass = (Class<T>) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
protected Class<T> getEntityClass() {
return entityClass;
}
public List<T> findAll(Class<T> entityClass) {
return getHibernateTemplate().loadAll(entityClass);
}
public List<T> findAll(Class<T> entityClass, String orderBy,
boolean isAsc) {
Assert.hasText(orderBy);
if (isAsc)
return getHibernateTemplate().findByCriteria( DetachedCriteria.forClass(entityClass).
addOrder(Order.asc(orderBy)));
else
return getHibernateTemplate().findByCriteria(
DetachedCriteria.forClass(entityClass).
addOrder(Order.desc(orderBy)));
}
public List<T> findByExample(Object o) {
return getHibernateTemplate().findByExample(o);
}
public T getById(Serializable id) {
return (T)getHibernateTemplate().get(entityClass, id);
}
public void deleteById(Serializable id) {
delete(getById(id));
}
public void delete(Object o) {
getHibernateTemplate().delete(o);
}
public void save(Object o) {
getHibernateTemplate().save(o);
}
public void saveOrUpdate(Object o) {
getHibernateTemplate().saveOrUpdate(o);
}
public void update(Object o) {
getHibernateTemplate().update(o);
}
//其他方法自己加喏,以后有空再补完整
}
1.4. 一个实体的Dao例子
1:接口
package com.ssh.file.dao;
import com.ssh.core.dao.GenericDao;
import com.ssh.model.file.File;
public interface FileDao extends GenericDao<File> {
}
2:类
package com.ssh.file.dao.impl;
import com.ssh.core.dao.impl.GenericDaoImplHibernate;
import com.ssh.file.dao.FileDao;
import com.ssh.model.file.File;
public class FileDaoImpl extends GenericDaoImplHibernate<File> implements FileDao{
//如果需要的方法在GenericDaoImplHibernate中都有的话,这里是可以不写任何代码的
}
分享到:
相关推荐
- `有关泛型dao的实现.doc`:可能包含泛型DAO的接口定义、实现以及如何在实际项目中应用的实例。 - `泛型DAO设计.doc`:可能探讨了泛型DAO的多种设计策略和最佳实践。 - `泛型dao的实现.doc`:可能详细描述了创建...
* DAO设计模式:泛型可以用于DAO设计模式中,例如BaseHibernateEntityDao等。 * 工具类:泛型可以用于工具类中,例如工具类的静态方法可以使用泛型。 五、结论 泛型是Java编程语言中的一种重要特性,它可以提高...
SSH整合(其中dao用extends HibernateDaoSupport方式)总结【图解】
Java 中利用泛型和反射机制抽象DAO的实例 Java 中利用泛型和反射机制抽象DAO的实例是指在 Java 中使用泛型和反射机制来抽象出一个通用的DAO(Data Access Object),从而将DAO抽象到另一层次,提高代码的质量和可...
当Spring与Hibernate结合时,Spring提供了`HibernateDaoSupport`类,它为基于Hibernate的DAO(数据访问对象)提供了一种简单而强大的支持。本文将深入探讨`HibernateDaoSupport`的原理、用法以及它如何简化开发工作...
### hibernateDaoSupport类的运用实例 #### 一、引言 `hibernateDaoSupport`是Spring框架中提供的一种支持Hibernate操作的基类。它主要用于简化Hibernate与Spring集成过程中的编码工作,使得开发人员能够更加专注于...
NULL 博文链接:https://wxinpeng.iteye.com/blog/1162157
本实例基于Eclipse IDE,这是一款强大的Java开发工具,支持SSH框架的集成和调试。HRSystem_Eclipse可能包含项目结构、源代码、配置文件等,新手可以通过导入此项目到Eclipse,按照代码逻辑逐步理解和学习SSH框架的...
### SSH集成示例详解 #### 一、概述 本文档旨在提供一个关于SSH(Struts + Spring + Hibernate)集成框架的简易示例,适合初学者快速理解如何将这三种技术结合在一起,构建一个简单的Web应用。该示例通过Eclipse +...
4. **DAO层与业务层开发**:使用HibernateDaoSupport作为DAO类的基础,简化对数据库的操作。同时,开发业务逻辑层,处理业务规则。 5. **Spring配置**:在Spring配置文件中,配置DAO和业务对象的Bean,通过依赖注入...
总结起来,这个SSH实例文档详细介绍了如何从零开始搭建一个基于SSH框架的Web应用,包括数据库设计、项目结构规划、各层接口及实现,以及框架的集成和配置。通过这个实例,开发者可以学习到如何在实际项目中灵活运用...
DAO层接口和实现类负责与数据库交互,实现类继承HibernateDaoSupport,以便使用Hibernate提供的便捷操作。 5. Service层设计:创建Service接口和实现类,实现业务逻辑,通过依赖注入调用DAO层方法。 6. Web层实现...
java基于SSH框架的学生成绩管理系统源码。要求: (1) 整合Struts2、Spring和Hibernate框架 (2) 实现“登录”功能 (3) 实现“学生信息管理”功能 (4) 实现“学生成绩管理”功能 (5) 实现分页功能 目的...
在SSH框架中,泛型可以被应用到DAO(Data Access Object)层,创建泛型DAO接口和实现,以减少代码重复,提高代码复用性和可维护性。例如,你可以创建一个泛型BaseDAO接口,如下所示: ```java public interface ...
首先,`HibernateDaoSupport`是Hibernate提供的一种用于简化DAO(Data Access Object)层开发的抽象基类。它属于`org.springframework.orm.hibernate5.support`包,为自定义DAO类提供了便捷的初始化和会话管理功能。...
通过ORM,Hibernate将数据库中的表映射为Java类,表中的行映射为类的实例,从而简化了数据库操作。 在MyEclipse 2014中,使用Hibernate 3进行开发的优势在于其集成的工具支持,可以便捷地创建和管理实体类以及XML...
### HibernateDaoSupport 分页实现详解 #### 一、概述 在Java开发中,尤其是在Web应用领域,对数据库的高效查询及数据展示是非常重要的一个环节。其中分页查询是提高用户体验和减轻服务器压力的一种常见手段。...
### 使用配置文件对DAO层封装具有分页功能的S2SH整合实例 #### 背景及概述 本文档旨在详细介绍如何使用配置文件的方式完成DAO层的封装,并在此基础上实现分页功能,最终达成S2SH(Struts、Spring、Hibernate)的...
在本教程中,我们将深入探讨如何在IntelliJ IDEA(简称IDEA)中配置一个基于Struts2(S),Hibernate(H)和Spring(S)的SSH整合项目。这是一个经典的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。在...
HibernateDaoSupport 是 Spring 为 Hibernate DAO(数据访问对象)层提供的一个抽象基类,它并不直接执行数据库操作,而是作为一个辅助类,帮助我们更方便地使用 HibernateTemplate。HibernateDaoSupport 主要有两个...