`

J2EE分层设计

阅读更多
[size=large][size=large][size=large]facade层,service 层,domain层,dao 层设计

一,Service->DAO,只能在Service中注入DAO

二,DAO只能操作表单数据,跨表操作放在Service中,Service尽量复用DAO,只有一张表产生的业务放入DAO中。

三,事务操作,放在一个DAO中。

四,如果有更大Service的之间的复杂调用,考虑在service上再加Facade层(Components组件)。

五,多考虑这部分代码放在哪里,多利用上下分层,增加代码可读性,提高代码复用率。

服务层处理业务逻辑,DAO封装Entity对象,Action作为Controller处理分发。
业务逻辑是最容易变化的地方,当业务改变时,只增加修改相应的代码即可。真正享受分层带来的益处。
 
 J2EE分层设计是Java企业应用的最基本的设计思想。

  从最常规的分层结构来说,系统层次从上到下依次为:

  表现层:主要是客户端的展示。

  服务层:直接为客户端提供的服务或功能。也是系统所能对外提供的功能。

  领域层:系统内的领域活动。

  DAO层:数据访问对象,通过领域实体对象来操作数据库。

  其中有些指导原则:

  1、上层总是依赖其下层,依赖关系不跨层。

  2、表现成除外,同一层之间方法不允许相互调用。这是实际开发中一些开发者容易范的错误!如果真是同一层之间存在方法调用,需要注意,这些调用都是一些上层不可见方法,比如一些工具方法等。

  3、一切从服务层出发,从系统需要提供的功能进行分析,确定Service接口中的方法。而不是从数据库的表出发,创建DAO,再创Domain,然后Service,这实际上是对系统分层的误解。

  4、系统最核心的设计就是将系统中的实体划分为领域模型。在此基础上设计数据的DAO层,并将这些活动暴露给服务层,服务层的实现依赖于领域活动。

  5、每个接口的职责范围明确有界。

   在我所做的系统中,常常看到一些糟糕的编码:系统设计从表开始,一个表对应一个DAO,一个DAO对应一个domain,一个Domain对应一个 Service,实际上Service的接口和DAO的接口基本上完全一样!导致Service的接口方法超多!到了表现层,前台程序员在写Action 的时候,Action中反复的调用Service方法,代码不堪入目。

  正确的设计应该是,一个领域活动会聚合对应一个或一组 DAO,来完成一个领域活动。而一个服务可能包含两个领域活动,比如一个转账的业务,对应两个领域活动。两个帐户的金额分别发生变化,需要操作一组领域活 动,而每个活动需要操作很多表(调用多个DAO)。 事务的控制我们可以放到Service层。

  目前,越来越多的架构师喜欢领域模 型驱动设计(http://www.infoq.com/cn/articles/cjq-ddd),针对系统的领域模型建模,然后上层直接是Service,Service下面就是领域活动层Activity,从而去掉了DAO层,这样做的 优点是系统设计思路更清晰,目标更明确。可以避免上面所说的一个表对应一个DAO、Service的情况。

  但缺点是当领域活动发生变化的时候,会引起领域活动层代码的变化。并且,当要更换持久化框架或者技术时候,领域活动要重新实现。

  但综合考虑起来,这样带来的优点也很多,而实际上更换数据库和持久化框架的情况很少,因此这样的设计也是有其合理性一面的。这样做实际上是将原来的DAO和Domain层合并为一个Activity.但上层的设计思路还是一致的。

  其实Service层的设计也很讲究,其中就是要控制Service的数量,从Service层往下,接口数量逐层增加。通常将一个模块的服务都集中到一个Service中来处理。

  每层中的每个接口都应该关注的是自己的那一块,而不是吃着碗里看着锅里,牛槽伸出个狗舌头,最典型的例子就是一个DAO中胡乱操作别的表。这种凌乱的实现只会置项目经理与死地。也会为软件的维护带来很大代价。

  笔者曾遇到这样的团队,缺乏对整个项目的整体设计,一个表一个DAO,对应一个Service,系统也不大,三四十张表,但是性能相当地下,经常down机。

  最终发现,失败不是开源框架和数据库以及应用服务器和硬件配置的错,根源在于拙劣的设计导致。

源文:     http://qwzhl100.blog.163.com/blog/static/2133124201042694155397/
分享到:
评论

相关推荐

    j2ee 架构设计 (SSH典型结构解析)

    J2EE架构通常采用分层设计,这种结构可以有效地分离关注点,提高代码的可读性和可维护性。在给定的文件中,实例架构被分为四层:UI层、业务层、数据持久层和域对象层。 UI层,即用户界面层,主要负责与用户交互。在...

    J2EE课程设计

    **J2EE课程设计** J2EE(Java 2 Platform, Enterprise Edition)是Java平台的一个版本,专为构建企业级应用程序而设计。它提供了一个全面的框架,支持分布式应用程序的开发、部署和管理,涵盖了从数据库连接、Web...

    J2EE体系结构设计.rar_J2EE_J2EE 设计_体系结构

    J2EE体系结构基于分层设计原则,通常包括以下几个关键层次: 1. **表现层(Presentation Layer)**:这一层负责与用户交互,通常由Web组件(如HTML、JavaScript、JSP和Servlet)构成,提供用户界面。JSP(Java...

    J2EE架构设计.pptx

    系统结构的分层设计有以下优点:各层职责明确,降低耦合度,增强系统的可扩展性和稳定性;提高代码重用率,提升开发效率;便于团队协作,每个层次的开发人员可以专注于自己的任务;使得系统更易于维护和升级,能更好...

    j2ee课程设计 毕业设计

    SSH架构以其良好的分层设计和松耦合特性,被广泛应用于各种复杂的业务场景。 1. **Spring**:Spring作为核心容器,负责管理应用的bean和依赖注入(DI)。它还提供了AOP(面向切面编程)功能,用于实现日志记录、...

    J2ee架构分析设计

    J2EE架构的设计原则和技术栈为企业级应用提供了强大的支撑,通过分层和组件化的策略,实现了高可用性、高扩展性和高效率。对于开发者而言,理解和掌握J2EE架构的关键技术,如多层体系结构、组件技术和服务技术,是...

    J2EE设计模式的简洁总结

    J2EE 设计模式的简洁总结 J2EE 设计模式是系统架构之基础,主要由架构设计、框架以及多个设计模式组成。设计模式是一种实践的总结,是 OOP 最直接的表现。掌握设计模式与否是衡量程序员设计水平高低的主要依据。 ...

    基于J2EE架构的生产管理系统设计

    多层架构通常分为表现层、业务逻辑层和数据访问层,这种分层设计有利于模块化开发,提高系统的可维护性和扩展性。 - **需求分析**:通过对造纸生产过程的需求进行深入分析,确定了系统的功能需求和技术需求。这一...

    论文研究-基于J2EE的网上选课系统设计.pdf

    J2EE是一种利用Java2平台来简化多级企业解决方案的开发、部署和管理...对实际应用的J2EE分层结构进行了详细分析,给出一种J2EE架构下的多层应用模式,并通过高校网上选课系统的设计详细介绍了该模式下的具体开发方案。

    J2EE架构与应用课程设计

    首先,J2EE架构基于分层模式,主要包含以下几个关键层: 1. **客户端层(Client Layer)**:用户界面通常通过Web浏览器或富客户端应用与系统交互。这一层负责处理用户请求,并展示返回的数据。 2. **Web层(Web ...

    j2ee实例 j2ee实例j2ee实例

    在J2EE实例中,你会接触到诸如Web层、业务逻辑层(Service层)和数据访问层(DAO层)的分层架构设计。Web层通常由Servlet和JSP组成,负责接收用户请求并返回响应;业务逻辑层处理业务规则和计算,常通过JavaBean或...

    基于j2ee图书管理系统.

    系统设计需要遵循模块化设计、分层设计和面向对象设计等原则。同时,系统设计也需要考虑到用户界面设计、数据库设计和系统安全设计等方面的内容。 基于J2EE的图书管理系统的开发与实现需要考虑到系统的开发背景、...

    EJB编程和j2ee架构设计

    J2EE架构是一种分层架构,包含以下层次: 1. **表示层(Presentation Layer)**:通常由Web组件(如JSP、Servlet)构成,负责用户界面的呈现和交互。 2. **业务逻辑层(Business Logic Layer)**:由EJB组成,实现...

    J2EE架构设计-成湘均

    多层架构,通常包括UI层、业务层、数据持久层和域对象层,这样的分层设计能够实现组件间的松耦合,提高代码重用率和开发效率,同时也便于团队协作和系统的维护与扩展。在UI层,主要介绍了Struts框架,它是基于MVC...

    JAVA架构设计原则与J2EE必读书目推荐

    对于想要深入了解JAVA架构设计和J2EE的开发者来说,以下是一些值得推荐的书籍: 1. **《Java Persistence with Hibernate》**:这本书详细介绍了Hibernate框架的使用方法,涵盖了从基本概念到高级主题的所有内容。 ...

    J2EE中的设计模式

    #### 二、J2EE架构分层 J2EE架构被划分为五层: 1. **客户层**:负责客户端与应用的交互,主要由浏览器等客户端工具组成。 2. **表示层**:处理用户界面逻辑,包括接收客户端请求、处理会话及向客户端发送响应。 3...

    J2EE 架构师手册

    在本书中,你会了解到J2EE架构设计的基本原则,包括分层架构、模块化设计、服务化思想等。分层架构通常包括表现层、业务逻辑层和数据访问层,每一层都有其特定的职责,以实现松耦合和高内聚。模块化设计则允许代码按...

    WebLogic Server 的J2EE设计

    文章提到的设计指导和最佳实践涵盖了诸如应用分层、负载均衡、会话管理、错误处理和日志记录等多个方面。例如,使用EJB进行业务逻辑处理,Servlets和JSP用于展示层,而JDBC用于数据库交互。此外,应用的物理部署,如...

    《J2EE体系结构及程序设计》课程评价分析

    《J2EE体系结构及程序设计》是一门针对计算机科学与技术专业学生的选修课程,主要目的是培养学生在Java EE平台上进行Web程序设计和企业应用开发的能力。课程在大学三年级第一学期开设,考虑到学生已具备一定的Java...

Global site tag (gtag.js) - Google Analytics