JAVA三层架构及基于三层架构的代码组织形式

看了很多教程和书籍,将JAVA三层架构进行一下总结。
欢迎同行提出宝贵意见,大家一起进步!

首先要说的是,关于Java三层架构的叫法有很多,中英文都演化出了很多不同的版本,但总体来说意思是一样的,所以不要太纠结于名称和叫法,重要的是对三层架构理念的理解。

JAVA三层架构如下:

  1. 视图层(或:表现层)
    英文的:View或Presentation
    用于接受用户输入的数据,以及显示结果。
  2. 业务逻辑层(或:服务层)
    英文的:Service或Application
    根据功能(业务)不同,执行不同的逻辑判断。
  3. 持久化层(或:数据访问层)
    英文的:DAO或Data
    用于访问数据库中的数据。

学Java学的是什么?

其实Java的语法和其它语言相比并无特殊之处,相比较于现在流行的Python等其它语言,甚至算不上优美。写惯了Python、Perl、PHP代码,会觉得Java非常繁琐。

既然从优美的角度Java并不占优势,我们就要从实用性的角度去学习这门语言了。

很多刚刚学习Java的人会觉得Java这门语言里面有很多“脱裤子放屁”的事情。本来一个文件,一行代码就能搞定的事情,它非要搞得很复杂。然而这就是学习Java的核心所在,学习Java其实就是学架构,就是学思想。很多初学阶段看似“脱裤子”放屁的事情,在项目实战中却是及其重要的。

根据Java的三层架构,演绎出以下常用的Java代码组织架构。

JAVA代码组织架构

  1. DAO层
    1. 数据库中的每一张表对应Java中的一个实体类(实体类常用英文是:Entity)。
    2. 每个Entity实体类又对应一个DAO接口及这个DAO接口的impl实现类。
  2. Service层
    1. 数据库中的每一张表对应一个Service服务类。
    2. XXXService服务类封装对t_xxx表的业务功能操作。
    3. 先定义Service接口,再编写这个Service接口对应的impl实现类。
  3. View层
    1. 负责提供一个功能入口,接受用户输入;显示结果。
    2. 一个功能对应一个View类,如XXXView

规则定好了,看下实际效果

file
对着上面这张图,再详细解释下:
假设我们数据库中只有一张数据表t_person表,所有的业务逻辑都围绕着这一张数据表来。

  1. DAO层
    1. 建立entity包,并在包下建立Person实体类,并注意:
      1. 实体类定义在entity包下
      2. 实体类必须实现Serializable接口
      3. 实体类属性必须私有,且数据类型使用包装类,并提供get、set方法。
      4. 实体类必须提供无参的构造方法
    2. 建立dao包,并在包下建立PersonDAO接口。
    3. 建立dao.impl子包,并在包下建立PersonDAOImpl类,用于实现PersonDAO接口。
  2. Service层
    1. 建立service包,并在包下建立UserService接口。
    2. 建立service.impl子包,并在包下建立UserServiceImpl类,用于实现UserService接口。
  3. View层
    1. 建立view包
    2. 在包下建立InsertPerson和SelectPerson两个类。用于完成插入和查询两个操作过程中与用户的交互。
    3. 如果是Web项目,再创建对应的JSP页面。