一、JavaWeb层次划分
1.数据访问层
即DAO层,DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。简而言之,DAO层应包含对数据库的操作,如增删改查等。
2.业务逻辑层
即service层,主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制。
3.界面层
即controller层或action层,Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。
三层的关系:
DAO层不应暴露给controller层,DAO层只提供对数据库的操作,controller层中大量调用的应是service层,而service层则把DAO层进行包装。
DAO层面向表,Service面向业务。后端开发时先数据库设计出所有表,然后对每一张表设计出DAO层,然后根据具体的业务逻辑进一步封装DAO层成一个Service层,对外提供成一个服务。
二、各层次的一般编写原则
Service层和Dao层最好遵循面向接口编程原则,即既有接口也有对应的实现类,好处是解耦,当需求变化时,可以动态改变实现类而不改变业务代码,从而提高可扩展性。