JAVA三层架构:
(持久层)数据访问层(dao)
(业务层)业务逻辑层(services)
(表示层)表现层(view)
Java三层架构项目分层:
entity:
实体层,与数据库的某个表相关联。
dao:
数据访问层(data access object),与数据库的增删改查等方法的相关代码写在这。一般定义为dao层包括dao,daoImpl,分别为数据层接口和数据层实现类
service:
业务层,处理业务操作,可以与外部系统交流,算法的实现,图片的处理等。一般项目都用service比较多。【service:供外部调用,主要是为了降低耦合,面向接口、组件编程,具体的服务类,能产生实际效果和影响的类放于此。
impl:
实现层,定义的接口,implement的缩写。
view:
表示层,负责页面的渲染以及特效的显示等等(用户操作界面)
util:
是工具层,utility是存放工具类相关的JAVA代码的.
根据三层架构进行分包:
- 视图层
com.hpe.view 用户界面 - 服务逻辑层
com.hpe.service 业务处理 - 数据持久层
com.hpe.dao 数据库访问
com.hpe.po 实体类
com.hpe.vo 视图类(联表查询实体类)
另:工具类
com.util 常用工具类封装
三层与MVC的区别:
很多人容易把三层模式与MVC模式混淆,三层与MVC的最不同的地方在于三层是没有Controller控制器的概念。虽然同样是架构级别的,三层与MVC相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。MVC没有把业务的逻辑访问看成两个层 ,这是采用三层架构或MVC搭建程序最主要的区别。当然了,在三层中也提到了Model概念,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层” 中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。
在三层中JSP与Servlet代码都属于表示层,业务逻辑层则是完成业务规则的实体类,数据访问层则是JDBC等代码,示意图:
三层架构把不同层的业务职责分离得更加彻底,逻辑层不包含一丁点的视图层代码,同样的数据层也不应该包含一丁点的逻辑层代码,因为如果包含了其他层的代码就不能做到完全解耦,依旧存在一定程度的耦合性。
三层架构更好的实现了模块化编程,使用三层架构设计的系统更容易扩展、更换,特别是如今不止pc端一种设备,如果没做好分层就无法适应多设备的访问。例如表示层我们使用jsp+Servlet做的,面向的是web,如果哪天不做web了,要把整个表示层更换成桌面的图形化来显示,那么使用了三层架构的话,只需要更换表示层即可,逻辑层和数据层都可以进行复用。如果没有进行分层的话,各个模块都耦合在一起就无法进行复用,只能重新再编写一个适应桌面的系统出来,这样就很耗时耗力了。
我们都知道WebService是一种跨编程语言和跨操作系统平台的远程调用技术,如果一个系统是使用三层架构进行设计的,那么逻辑层就可以通过WebService共享给其他不同语言编写的应用程序调用。
最近流行的微信小程序是通过https访问服务器的,它需要服务器返回json数据,那么我们就可以在视图层中的Servlet接收这个访问,处理完成后返回json数据。
三层开发模式的优缺点
优点:
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
6、结构更加的明确
7、在后期维护的时候,极大地降低了维护成本和维护时间
缺点:
1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
比如,一家饭店添加了一样菜, 那个菜单(UI) , 厨师(BLL) , 采购(DAL) 都要进行相应的处理。
标签:逻辑,架构,表示层,访问,MVC,三层 From: https://www.cnblogs.com/amor2818/p/17110241.html