三层架构
什么是 Java 三层架构
三层架构是指:视图层view(表现层),服务层service(业务逻辑层),持久层Dao(数据访问层),
Java的三层架构是指将Java程序分为三个主要层次,分别是表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。
- **表现层:**表现层是应用程序的用户接口部分,负责与用户进行交互。它可以包括Web界面、移动应用程序界面以及API接口等,主要任务是呈现信息以及提供用户输入的途径。
- **业务层:**业务逻辑层是应用程序的核心部分,包含了实现业务逻辑的代码,位于表示层和数据访问层之间,主要处理用户请求并访问数据库。
- **持久层:**数据访问层负责与数据库进行交互,提供数据访问对象用于执行数据库操作,如查询、插入、更新等,主要任务是抽象底层数据访问技术,使得业务逻辑层可以专注于业务逻辑的实现,而不必关心底层数据的存储和访问细节。
层次结构和调用关系
三层架构是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。
整个项目的层次关系如下:
- 表示层(UI):这一层是直接与用户交互的界面,包括各种用户输入和输出,它通常由前端框架(如React、Angular、Vue等)构成。
- 业务逻辑层(BLL):这一层处理所有的业务逻辑和规则,它接受表示层的请求,进行相应的处理,然后返回结果给表示层。这一层通常由后端框架(如Spring、Spring Boot等)构成。
- 数据访问层(DAL):这一层直接和数据库进行交互,处理数据的增删改查操作。它通常由ORM框架(如Hibernate、MyBatis等)构成。
在调用和依赖关系上:
- 表示层(UI)只依赖于业务逻辑层(BLL),不直接依赖于数据访问层(DAL)。它通过调用业务逻辑层的接口来请求数据,然后接收业务逻辑层返回的数据。
- 业务逻辑层(BLL)既依赖于表示层(UI),也依赖于数据访问层(DAL)。它接收表示层的请求,调用数据访问层的数据,然后将处理结果返回给表示层。
- 数据访问层(DAL)依赖于业务逻辑层(BLL)。它只负责处理数据的增删改查操作,不直接与用户交互。
这种层次结构提高了开发效率,有利于项目的更新和维护工作。
其他
是的,使用Spring框架时,通常不再采用传统的三层架构设计,而是使用Spring的组件模型进行设计。
Spring框架提供了很多组件和模块,例如Spring MVC、Spring Data、Spring Service、Spring DAO等,这些组件和模块可以帮助开发者构建一个完整的Web应用程序。
在Spring框架中,表现层通常使用Spring MVC来实现,通过Controller和View来处理用户请求和展示数据;业务逻辑层通常使用Spring Service来实现,通过Service接口和实现类来处理业务逻辑;数据访问层通常使用Spring Data或MyBatis等持久层框架来实现,通过Repository或Mapper来访问数据库。
当然,具体的项目结构设计和命名习惯还需要根据项目需求和团队约定来确定。
随着Spring框架的普及,使用传统的三层架构的项目越来越少。相对于SSM框架,传统的三层架构存在以下缺陷和不足:
- 开发效率较低:传统的三层架构需要开发者手动编写大量的代码来构建每一层,而SSM框架集成了很多常用的功能和组件,可以更快地完成开发。
- 组件集成困难:传统的三层架构需要开发者手动集成各种组件,如ORM框架、事务管理等,而SSM框架提供了一站式的解决方案,可以更容易地集成各种组件。
- 代码可读性较差:由于传统的三层架构代码量较大,而且各层之间的耦合度较高,代码可读性较差。而SSM框架的代码结构清晰,易于维护和扩展。
- 数据库访问方式不灵活:传统的三层架构通常使用ORM框架来访问数据库,相对于SSM框架的JDBC或MyBatis等持久层框架,数据库访问方式不够灵活。
- 配置复杂:传统的三层架构通常需要大量的配置文件,如Spring配置文件、事务配置文件等,而SSM框架的配置相对简单,易于维护。
总之,相对于SSM框架,传统的三层架构开发效率较低、组件集成困难、代码可读性较差、数据库访问方式不灵活且配置复杂等。因此,在大多数情况下,使用Spring框架和SSM架构是更好的选择。