`
xianglg
  • 浏览: 67078 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2+hibernate+spring配置管理(二)——DAO层(一)

阅读更多

前面时间一直忙于赶项目,忽略了Struts2+hibernate+spring这个系列只是开了个头,所以赶紧把以前的代码翻出来,整理了一下,就接着讲DAO层吧。

首先我们一起讨论一下DAO层的设计,一般来说,有这样两种设计:

java 代码
  1. public class ADAO(){   
  2.     public void create(A a){   
  3.        ....   
  4.     }   
  5.   
  6.     public void add(A a){   
  7.        ....   
  8.     }   
  9.   
  10.     public void delete(A a){   
  11.        ....   
  12.     }   
  13. }   
  14.   
  15. public class BDAO(){   
  16.     public void create(B b){   
  17.        ....   
  18.     }   
  19.   
  20.     public void add(B b){   
  21.        ....   
  22.     }   
  23.   
  24.     public void delete(B b){   
  25.        ....   
  26.     }   
  27.   
  28.     public void find(B b){   
  29.        ....   
  30.     }   
  31. }   
  32.   
  33. public class CDAO(C c){   
  34.     public void create(){   
  35.        ....   
  36.     }   
  37.   
  38.     public void add(C c){   
  39.        ....   
  40.     }   
  41.   
  42.     public void delete(C c){   
  43.        ....   
  44.     }   
  45.   
  46.     public void find(C c){   
  47.        ....   
  48.     }   
  49. }  

这里一共设计了三个实体DAO,分别为A,B,C,这样的好处是对象的封装思想比较好,每个实体DAO都有自己独立的接口方法,但缺点也显而易见,就是重复代码太多太多。

再看第二种设计思想,以解决前面的缺点:

java 代码
  1. abstract public class BaseDAO{   
  2.     public void create(Object o){      
  3.        ....      
  4.     }      
  5.      
  6.     public void add(Object o){      
  7.        ....      
  8.     }      
  9.      
  10.     public void delete(Object o){      
  11.        ....      
  12.     }   
  13.      
  14.   
  15. }   
  16.   
  17. public class ADAO entends BaseDAO{   
  18.     public void otherMethod(A a){   
  19.         .....   
  20.     }   
  21. }   
  22.   
  23. //other EntityDAO   
  24. .....   

使用这种设计思想,很好的解决了前面的瓶颈,但它也有缺点,破坏了面向对象的封装性。

两个设计思想,我们该如何取舍呢?其实如果了解泛型的话,就迎刃而解了,于是,就有了第三种解决方案如下:

java 代码
  1. abstract public class DAO<t></t> {      
  2.     public void create (T t)){
  3.        ...
  4.     }    
  5.       
  6.     public void delete (T t)){
  7.        ...
  8.     }    
  9.       
  10.     public void update (T t)){
  11.        ...
  12.     }    
  13.       
  14.     ...   
  15. }      
  16.      
  17. public class ADAO extends BaseDAO {      
  18.     public void otherMethod (A a){
  19.        ...
  20.     }    
  21. }   

注:关于泛型的知识,不是本文所要讲的,如有不解,可查找有关文档寻求帮助。

应该说,我个人比较喜欢第三种解决方案,由于这个项目使用了spring,于是大家应该又能想到让它继承于Spring的HibernateDaoSupport,提供分页函数和若干便捷查询方法,并对返回值作了泛型类型转换。

经过讨论后,大家应该有了比较好的思路了,具体代码碍于篇幅,下一篇贴出。

分享到:
评论
2 楼 wjhandboy 2008-02-20  
恩。很有帮助,辛苦啦
1 楼 zgh207 2007-12-01  
期待下一篇啊!

相关推荐

    基于Struts2+hibernate+spring 注解开发的学生信息管理系统

    总结来说,这个"基于Struts2+hibernate+spring 注解开发的学生信息管理系统"是一个利用Java Web三大框架的典型应用,实现了学生信息的基本操作。通过优化前端设计,可以进一步提升系统的整体质量和用户体验。在实际...

    基于Struts2+Spring+Hibernate+MySql的注册登录系统.zip

    在SSH系统中,Spring主要负责管理整个应用的组件,包括Struts2的Action、Hibernate的数据访问对象(DAO)等。通过Spring的IoC容器,我们可以实现松耦合和更好的测试性。同时,Spring还提供了与Hibernate的集成,简化...

    struts2 + hibernate3 + spring3 ssh 用户的增删改查

    在SSH框架中,Spring不仅负责组装和管理Struts2和Hibernate中的组件,还提供事务管理、数据源配置等功能。对于用户管理,Spring可以帮助我们管理和协调数据库操作,确保在多线程环境下的数据一致性。 在SSH整合过程...

    struts2+hibernate+spring整合的管理系统

    Struts2、Hibernate和Spring是Java开发中三大主流框架,它们的整合应用在企业级Web应用开发中极为常见。这个管理系统就是基于这三个框架的集成,提供了高效、灵活且可维护的解决方案。 Struts2作为MVC(Model-View-...

    Struts2+Hibernate3+Spring2.5整合详细步骤+实例可运行代码

    1. word文档记录了Struts2+Hibernate3+Spring2.5整合详细步骤,附有操作步骤的图示参考,并给出了各个步骤的注意事项; 2. 源代码实例包括一个完整模块的增删改查操作,可直接运行,可以在此基础上直接进行自己系统...

    struts2+hibernate+spring+dwr整合

    2. Spring 作为整体的容器,管理所有组件的生命周期,包括Struts2的Action、Hibernate的数据访问对象(DAO)以及DWR的远程接口。Spring的DI特性使得各组件之间的依赖关系得以解耦。 3. Hibernate 作为持久层框架,...

    struts2+hibernate3.3+spring3.0整合实例

    Struts2、Hibernate3.3和Spring3.0是Java Web开发中著名的三大框架,它们分别负责MVC模式中的Action层、持久化层和依赖注入与业务逻辑管理。本实例将详细阐述如何将这三个框架整合在一起,实现一个完整的CRUD(创建...

    struts2 + spring 3 + hibernate3.3整合实现图书馆管理管理

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...

    10.6struts2+hibernate+spring的整合源代码

    Struts2、Hibernate和Spring是Java企业级应用中常用的三个开源框架,它们分别负责MVC模式中的表现层、持久层和业务层管理。SSH(Struts2+Spring+Hibernate)框架整合是Java Web开发中常见的一种技术栈,能有效地提高...

    Struts2+Hibernate+Spring基于单表的增删改查code

    在这个项目中,Spring作为服务层的容器,管理Bean的生命周期,通过依赖注入将Struts2和Hibernate整合在一起,同时也提供了事务管理,确保数据的一致性。 项目中的sql脚本用于创建数据库表,通常包括表的结构定义和...

    Struts2+hibernate3.2+Spring2.0架构搭建

    ### Struts2+Hibernate3.2+Spring2.0架构搭建详解 #### 一、环境搭建与配置 在本教程中,我们将详细讲解如何搭建基于Struts2+Hibernate3.2+Spring2.0的软件架构。这个组合常被称为SSH(Struts-Spring-Hibernate)...

    Struts2+Hibernate4+Spring4+MySql5

    在整合这些技术时,通常会使用Spring4作为核心容器,管理所有组件的生命周期,包括Struts2的Action和Hibernate4的数据访问对象(DAO)。Struts2处理HTTP请求,调用Spring管理的业务服务,而这些服务又依赖于...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用03

    实际的范例应用会包含详细的配置文件、Action类、Service类和DAO类的代码,以及如何在这些类中使用Struts2、Hibernate和Spring的示例。这些代码实例将帮助开发者更好地理解和掌握三者整合的技巧,提升开发效率。

    struts1.2 + spring2.5 + hibernate3.2框架demo

    2. **配置文件**:struts-config.xml定义Struts的配置,spring-beans.xml管理Spring的bean,hibernate.cfg.xml配置Hibernate的数据库连接,可能还有实体类的映射文件(hbm.xml或使用注解)。 3. **JSP页面**:展示...

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境的搭建是一个非常重要的步骤。本文将详细介绍如何在 Struts2+Spring+Hibernate 框架中搭建 Action 的单元测试环境。 首先,需要了解为什么需要对 ...

    Struts2.1.6+Hibernate3.3.1+Spring2.5.6整合jar包

    3. 配置Struts2:在struts.xml文件中配置Struts2的动作映射,指定Action类,同时配置Spring插件,使得Action类由Spring管理。 4. 配置Hibernate:设置hibernate.cfg.xml文件,定义数据库连接、实体类等信息。 5. ...

    struts2+hibernate+spring经典整合实例教程

    - 配置 Struts2 使用 Spring 管理对象:`&lt;constant name="struts.objectFactory" value="spring"/&gt;` - 导入默认配置文件:`&lt;include file="struts-default.xml"/&gt;` - 定义 Action 类:`...

    最新项目系统:Struts2+Spring4+Hibernate4三大框架整合

    Struts2、Spring4和Hibernate4是Java Web开发中的三大主流框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个最新的项目系统整合了这三个框架,旨在提供一个高效、灵活且易于维护的开发环境。下面将详细...

    struts2+hibernate+spring+ibatis 小实例

    struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+...

Global site tag (gtag.js) - Google Analytics