`
hch1011
  • 浏览: 50701 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SSH实例:基于HibernateDaoSupport的泛型Dao

    博客分类:
  • java
阅读更多

 例子是根据博友的例子改的。保留原作者名。并留以自用!

(项目: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中都有的话,这里是可以不写任何代码的
}

 

  • SSHFileMysql.rar (61.1 KB)
  • 描述: mysql版,说明在lib 下面
  • 下载次数: 700
分享到:
评论
6 楼 luoba 2008-12-10  
学习学习,谢谢了
5 楼 yzl45 2008-11-06  
和springside2.0是一样的!
4 楼 avanry 2008-10-13  
看了,第一个例子导入不了,而且这两个都是用struts1.X做的,不是struts2.0啊
3 楼 jbeduhai 2008-09-19  
不错,谢了!!!
2 楼 qiancaoduwu 2008-09-09  
好像导入工程有点问题?
1 楼 tantec 2008-09-07  
很好,谢谢啦

相关推荐

    DAO模式设计

    - `有关泛型dao的实现.doc`:可能包含泛型DAO的接口定义、实现以及如何在实际项目中应用的实例。 - `泛型DAO设计.doc`:可能探讨了泛型DAO的多种设计策略和最佳实践。 - `泛型dao的实现.doc`:可能详细描述了创建...

    Java泛型的用法及T.class的获取过程解析

    * DAO设计模式:泛型可以用于DAO设计模式中,例如BaseHibernateEntityDao等。 * 工具类:泛型可以用于工具类中,例如工具类的静态方法可以使用泛型。 五、结论 泛型是Java编程语言中的一种重要特性,它可以提高...

    SSH整合(其中dao用extends HibernateDaoSupport方式)总结【图解】

    SSH整合(其中dao用extends HibernateDaoSupport方式)总结【图解】

    Java 中利用泛型和反射机制抽象DAO的实例

    Java 中利用泛型和反射机制抽象DAO的实例 Java 中利用泛型和反射机制抽象DAO的实例是指在 Java 中使用泛型和反射机制来抽象出一个通用的DAO(Data Access Object),从而将DAO抽象到另一层次,提高代码的质量和可...

    HibernateDaoSupport的使用

    当Spring与Hibernate结合时,Spring提供了`HibernateDaoSupport`类,它为基于Hibernate的DAO(数据访问对象)提供了一种简单而强大的支持。本文将深入探讨`HibernateDaoSupport`的原理、用法以及它如何简化开发工作...

    hibernateDaoSupport类的运用实例

    ### hibernateDaoSupport类的运用实例 #### 一、引言 `hibernateDaoSupport`是Spring框架中提供的一种支持Hibernate操作的基类。它主要用于简化Hibernate与Spring集成过程中的编码工作,使得开发人员能够更加专注于...

    重写Spring的HibernateDaoSupport 简化Dao层写法

    NULL 博文链接:https://wxinpeng.iteye.com/blog/1162157

    jsp开发实例:Struts2+Spring3+Hibernate整合开发

    本实例基于Eclipse IDE,这是一款强大的Java开发工具,支持SSH框架的集成和调试。HRSystem_Eclipse可能包含项目结构、源代码、配置文件等,新手可以通过导入此项目到Eclipse,按照代码逻辑逐步理解和学习SSH框架的...

    ssh实例 集成 例子

    ### SSH集成示例详解 #### 一、概述 本文档旨在提供一个关于SSH(Struts + Spring + Hibernate)集成框架的简易示例,适合初学者快速理解如何将这三种技术结合在一起,构建一个简单的Web应用。该示例通过Eclipse +...

    ssh框架使用方法总结

    4. **DAO层与业务层开发**:使用HibernateDaoSupport作为DAO类的基础,简化对数据库的操作。同时,开发业务逻辑层,处理业务规则。 5. **Spring配置**:在Spring配置文件中,配置DAO和业务对象的Bean,通过依赖注入...

    自己写的SSH配置实例文档 绝非杜撰

    总结起来,这个SSH实例文档详细介绍了如何从零开始搭建一个基于SSH框架的Web应用,包括数据库设计、项目结构规划、各层接口及实现,以及框架的集成和配置。通过这个实例,开发者可以学习到如何在实际项目中灵活运用...

    SSH整合实例(学生成绩管理系统)

    DAO层接口和实现类负责与数据库交互,实现类继承HibernateDaoSupport,以便使用Hibernate提供的便捷操作。 5. Service层设计:创建Service接口和实现类,实现业务逻辑,通过依赖注入调用DAO层方法。 6. Web层实现...

    java大作业基于SSH框架的学生成绩管理系统源码.zip

    java基于SSH框架的学生成绩管理系统源码。要求: (1) 整合Struts2、Spring和Hibernate框架 (2) 实现“登录”功能 (3) 实现“学生信息管理”功能 (4) 实现“学生成绩管理”功能 (5) 实现分页功能 目的...

    ssh数据库基本操作封装

    在SSH框架中,泛型可以被应用到DAO(Data Access Object)层,创建泛型DAO接口和实现,以减少代码重复,提高代码复用性和可维护性。例如,你可以创建一个泛型BaseDAO接口,如下所示: ```java public interface ...

    HibernateDaoSupport 与@Autowired

    首先,`HibernateDaoSupport`是Hibernate提供的一种用于简化DAO(Data Access Object)层开发的抽象基类。它属于`org.springframework.orm.hibernate5.support`包,为自定义DAO类提供了便捷的初始化和会话管理功能。...

    MyEclipse 2014 使用hibernate3 生成数据库实体类 和 xml映射文件

    通过ORM,Hibernate将数据库中的表映射为Java类,表中的行映射为类的实例,从而简化了数据库操作。 在MyEclipse 2014中,使用Hibernate 3进行开发的优势在于其集成的工具支持,可以便捷地创建和管理实体类以及XML...

    HibernateDaoSupport分页.

    ### HibernateDaoSupport 分页实现详解 #### 一、概述 在Java开发中,尤其是在Web应用领域,对数据库的高效查询及数据展示是非常重要的一个环节。其中分页查询是提高用户体验和减轻服务器压力的一种常见手段。...

    使用配置文件对DAO层封装具有分页功能的S2SH整合实例_好资源0分送

    ### 使用配置文件对DAO层封装具有分页功能的S2SH整合实例 #### 背景及概述 本文档旨在详细介绍如何使用配置文件的方式完成DAO层的封装,并在此基础上实现分页功能,最终达成S2SH(Struts、Spring、Hibernate)的...

    基于IDEA的SSH项目之二:配置Spring一(第四步结束时的程序包)

    在本教程中,我们将深入探讨如何在IntelliJ IDEA(简称IDEA)中配置一个基于Struts2(S),Hibernate(H)和Spring(S)的SSH整合项目。这是一个经典的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。在...

    javaee源代码ssh

    HibernateDaoSupport 是 Spring 为 Hibernate DAO(数据访问对象)层提供的一个抽象基类,它并不直接执行数据库操作,而是作为一个辅助类,帮助我们更方便地使用 HibernateTemplate。HibernateDaoSupport 主要有两个...

Global site tag (gtag.js) - Google Analytics