前面时间一直忙于赶项目,忽略了Struts2+hibernate+spring这个系列只是开了个头,所以赶紧把以前的代码翻出来,整理了一下,就接着讲DAO层吧。
首先我们一起讨论一下DAO层的设计,一般来说,有这样两种设计:
java 代码
- public class ADAO(){
- public void create(A a){
- ....
- }
-
- public void add(A a){
- ....
- }
-
- public void delete(A a){
- ....
- }
- }
-
- public class BDAO(){
- public void create(B b){
- ....
- }
-
- public void add(B b){
- ....
- }
-
- public void delete(B b){
- ....
- }
-
- public void find(B b){
- ....
- }
- }
-
- public class CDAO(C c){
- public void create(){
- ....
- }
-
- public void add(C c){
- ....
- }
-
- public void delete(C c){
- ....
- }
-
- public void find(C c){
- ....
- }
- }
这里一共设计了三个实体DAO,分别为A,B,C,这样的好处是对象的封装思想比较好,每个实体DAO都有自己独立的接口方法,但缺点也显而易见,就是重复代码太多太多。
再看第二种设计思想,以解决前面的缺点:
java 代码
- abstract public class BaseDAO{
- public void create(Object o){
- ....
- }
-
- public void add(Object o){
- ....
- }
-
- public void delete(Object o){
- ....
- }
-
-
- }
-
- public class ADAO entends BaseDAO{
- public void otherMethod(A a){
- .....
- }
- }
-
-
- .....
使用这种设计思想,很好的解决了前面的瓶颈,但它也有缺点,破坏了面向对象的封装性。
两个设计思想,我们该如何取舍呢?其实如果了解泛型的话,就迎刃而解了,于是,就有了第三种解决方案如下:
java 代码
- abstract public class DAO<t></t> {
- public void create (T t)){
- ...
- }
-
- public void delete (T t)){
- ...
- }
-
- public void update (T t)){
- ...
- }
-
- ...
- }
-
- public class ADAO extends BaseDAO {
- public void otherMethod (A a){
- ...
- }
- }
注:关于泛型的知识,不是本文所要讲的,如有不解,可查找有关文档寻求帮助。
应该说,我个人比较喜欢第三种解决方案,由于这个项目使用了spring,于是大家应该又能想到让它继承于Spring的HibernateDaoSupport
,提供分页函数和若干便捷查询方法,并对返回值作了泛型类型转换。
经过讨论后,大家应该有了比较好的思路了,具体代码碍于篇幅,下一篇贴出。
分享到:
相关推荐
总结来说,这个"基于Struts2+hibernate+spring 注解开发的学生信息管理系统"是一个利用Java Web三大框架的典型应用,实现了学生信息的基本操作。通过优化前端设计,可以进一步提升系统的整体质量和用户体验。在实际...
在SSH系统中,Spring主要负责管理整个应用的组件,包括Struts2的Action、Hibernate的数据访问对象(DAO)等。通过Spring的IoC容器,我们可以实现松耦合和更好的测试性。同时,Spring还提供了与Hibernate的集成,简化...
在SSH框架中,Spring不仅负责组装和管理Struts2和Hibernate中的组件,还提供事务管理、数据源配置等功能。对于用户管理,Spring可以帮助我们管理和协调数据库操作,确保在多线程环境下的数据一致性。 在SSH整合过程...
Struts2、Hibernate和Spring是Java开发中三大主流框架,它们的整合应用在企业级Web应用开发中极为常见。这个管理系统就是基于这三个框架的集成,提供了高效、灵活且可维护的解决方案。 Struts2作为MVC(Model-View-...
1. word文档记录了Struts2+Hibernate3+Spring2.5整合详细步骤,附有操作步骤的图示参考,并给出了各个步骤的注意事项; 2. 源代码实例包括一个完整模块的增删改查操作,可直接运行,可以在此基础上直接进行自己系统...
2. Spring 作为整体的容器,管理所有组件的生命周期,包括Struts2的Action、Hibernate的数据访问对象(DAO)以及DWR的远程接口。Spring的DI特性使得各组件之间的依赖关系得以解耦。 3. Hibernate 作为持久层框架,...
Struts2、Hibernate3.3和Spring3.0是Java Web开发中著名的三大框架,它们分别负责MVC模式中的Action层、持久化层和依赖注入与业务逻辑管理。本实例将详细阐述如何将这三个框架整合在一起,实现一个完整的CRUD(创建...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...
Struts2、Hibernate和Spring是Java企业级应用中常用的三个开源框架,它们分别负责MVC模式中的表现层、持久层和业务层管理。SSH(Struts2+Spring+Hibernate)框架整合是Java Web开发中常见的一种技术栈,能有效地提高...
在这个项目中,Spring作为服务层的容器,管理Bean的生命周期,通过依赖注入将Struts2和Hibernate整合在一起,同时也提供了事务管理,确保数据的一致性。 项目中的sql脚本用于创建数据库表,通常包括表的结构定义和...
### Struts2+Hibernate3.2+Spring2.0架构搭建详解 #### 一、环境搭建与配置 在本教程中,我们将详细讲解如何搭建基于Struts2+Hibernate3.2+Spring2.0的软件架构。这个组合常被称为SSH(Struts-Spring-Hibernate)...
在整合这些技术时,通常会使用Spring4作为核心容器,管理所有组件的生命周期,包括Struts2的Action和Hibernate4的数据访问对象(DAO)。Struts2处理HTTP请求,调用Spring管理的业务服务,而这些服务又依赖于...
实际的范例应用会包含详细的配置文件、Action类、Service类和DAO类的代码,以及如何在这些类中使用Struts2、Hibernate和Spring的示例。这些代码实例将帮助开发者更好地理解和掌握三者整合的技巧,提升开发效率。
2. **配置文件**:struts-config.xml定义Struts的配置,spring-beans.xml管理Spring的bean,hibernate.cfg.xml配置Hibernate的数据库连接,可能还有实体类的映射文件(hbm.xml或使用注解)。 3. **JSP页面**:展示...
在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境的搭建是一个非常重要的步骤。本文将详细介绍如何在 Struts2+Spring+Hibernate 框架中搭建 Action 的单元测试环境。 首先,需要了解为什么需要对 ...
3. 配置Struts2:在struts.xml文件中配置Struts2的动作映射,指定Action类,同时配置Spring插件,使得Action类由Spring管理。 4. 配置Hibernate:设置hibernate.cfg.xml文件,定义数据库连接、实体类等信息。 5. ...
- 配置 Struts2 使用 Spring 管理对象:`<constant name="struts.objectFactory" value="spring"/>` - 导入默认配置文件:`<include file="struts-default.xml"/>` - 定义 Action 类:`...
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+...