看了很多教程和书籍,将JAVA三层架构进行一下总结。
欢迎同行提出宝贵意见,大家一起进步!
首先要说的是,关于Java三层架构的叫法有很多,中英文都演化出了很多不同的版本,但总体来说意思是一样的,所以不要太纠结于名称和叫法,重要的是对三层架构理念的理解。
JAVA三层架构如下:
- 视图层(或:表现层)
英文的:View或Presentation
用于接受用户输入的数据,以及显示结果。 - 业务逻辑层(或:服务层)
英文的:Service或Application
根据功能(业务)不同,执行不同的逻辑判断。 - 持久化层(或:数据访问层)
英文的:DAO或Data
用于访问数据库中的数据。
学Java学的是什么?
其实Java的语法和其它语言相比并无特殊之处,相比较于现在流行的Python等其它语言,甚至算不上优美。写惯了Python、Perl、PHP代码,会觉得Java非常繁琐。
既然从优美的角度Java并不占优势,我们就要从实用性的角度去学习这门语言了。
很多刚刚学习Java的人会觉得Java这门语言里面有很多“脱裤子放屁”的事情。本来一个文件,一行代码就能搞定的事情,它非要搞得很复杂。然而这就是学习Java的核心所在,学习Java其实就是学架构,就是学思想。很多初学阶段看似“脱裤子”放屁的事情,在项目实战中却是及其重要的。
根据Java的三层架构,演绎出以下常用的Java代码组织架构。
JAVA代码组织架构
- DAO层
- 数据库中的每一张表对应Java中的一个实体类(实体类常用英文是:Entity)。
- 每个Entity实体类又对应一个DAO接口及这个DAO接口的impl实现类。
- Service层
- 数据库中的每一张表对应一个Service服务类。
- XXXService服务类封装对t_xxx表的业务功能操作。
- 先定义Service接口,再编写这个Service接口对应的impl实现类。
- View层
- 负责提供一个功能入口,接受用户输入;显示结果。
- 一个功能对应一个View类,如XXXView
规则定好了,看下实际效果
对着上面这张图,再详细解释下:
假设我们数据库中只有一张数据表t_person表,所有的业务逻辑都围绕着这一张数据表来。
- DAO层
- 建立entity包,并在包下建立Person实体类,并注意:
- 实体类定义在entity包下
- 实体类必须实现Serializable接口
- 实体类属性必须私有,且数据类型使用包装类,并提供get、set方法。
- 实体类必须提供无参的构造方法
- 建立dao包,并在包下建立PersonDAO接口。
- 建立dao.impl子包,并在包下建立PersonDAOImpl类,用于实现PersonDAO接口。
- 建立entity包,并在包下建立Person实体类,并注意:
- Service层
- 建立service包,并在包下建立UserService接口。
- 建立service.impl子包,并在包下建立UserServiceImpl类,用于实现UserService接口。
- View层
- 建立view包
- 在包下建立InsertPerson和SelectPerson两个类。用于完成插入和查询两个操作过程中与用户的交互。
- 如果是Web项目,再创建对应的JSP页面。
[…] 刚刚学习Java的时候,我们学习三层架构,三层架构中的一层就是持久化层,持久化层里面有实体类(Entity)、DAO接口、DAO接口实现类等概念。有关三层架构的理解,请参考:http://www.leonwish.com/archives/58 在我们建实体类的时候,往往都要实现Serializable接口,这是为什么呢? […]