Javaweb项目分层概念理解

Javaweb项目分层概念理解层次概述 DAO DataAccessOb 数据访问对象 接口 DAOImpl DAO 的实现类 entity 数据对象的实体 有些地方叫 model 层 Service 不是 Server 就是中间层 业务逻辑层 接口 ServiceImpl Service 的实现类 Util 自定义工具类 Servlet JAVAWEB 小应用 有时叫 Contro

我的主页: isfantasy.com

层次概述

Javaweb项目分层概念理解

常见问题

1. JAVA中Servlet层、Service层 、modle层 、 Dao层的功能区分?

答:Servlet层用于接收请求并且调用对应service层处理请求,是Java各层中最接近浏览器的一层。Service层主要编写具体业务逻辑,每个Service一般包含一组相关的业务逻辑(比如用户管理是一个Service,文章管理是一个Service)。modle/entity层(统称模型层)就是对应的数据库表的实体类,一般每个模型层类对应一个数据库“表”,一般是用于ORM对象关系映射,一方面方便从数据库取数据时保存为类,一方面也方便写入数据库,简而言之就是为了方便操作数据库。Dao层一般用于对数据库的具体操作,包括各种具体的增删改查语句和数据库数据和Java模型的映射。Util层主要用于存在项目各层都有可能出现、不好划分到某层中、出现频率较高的功能(类),比如连接数据库、获取系统参数、导出Excel表……

2. 为什么将Service(Dao)层设为接口层,单独拿出一个ServiceImpl(DaoImpl)作为实现层? 

答:主要还是为了方便项目管理,增加代码的复用性。当项目很大、代码很多时,可能存在多种业务逻辑类似但具体业务有所区别的需求,此时让它们都集成同一个接口层就好了(只是情景之一)。

3. 为什么要用service层封装?

答:这个问题就像Java为什么要分层一样。一般来说,某一个程序的有些业务流程需要连接数据库,有些不需要与数据库打交道而直接是一些业务处理,这样就需要我们整合起来到service中去,这样可以起到一个更好的开发与维护的作用,同时也是MVC设计模式中model层功能的体现。

4. Entity、Pojo、JavaBean和DTO有什么区别? 

答:Entity:实体bean,一般是用于ORM对象关系映射,一个实体映射成一张表,一般无业务逻辑代码,有些优秀框架中修改entity会直接同步到数据库。JavaBean:是一种Java语言写成的可重用组件,类必须是具体和公共的,并且具有无参数的构造器,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度和维护成本(说白了就是一种类的规范,符合这种规范的都可以叫JavaBean)。Pojo:简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。DTO:数据传输对象(Data Transfer Object),是一种设计模式之间传输数据的软件应用系统。(其实一般开发很难也不必去感受它们的差别,开发多了感觉就来了)

5.模型类和VO类分别是什么 

答:模型类一般都会与数据库一一对应(见上文),但仅有模型类无法满足所有需求场景(多表查询):对于一个商城网站,商品详情页面不仅要显示商品的一般信息,还要显示所属店家信息、店主信息、地理位置……此时数据库商品表中不可能存这么多字段(这会造成很大冗余),解决方案之一就是开发者手动分别查询商品表、店铺表、店主表数据然后将需要的数据拼接在一起传到前端,但这种方法会让开发者浪费不少时间。与此相对的另一个更好的方案是,我们可以将商品详情页需要的数据单独再封装成一个实体类——这便是VO类,我们在想要获取商品详情时单独写一个查询方法对应VO(可以直接将查询结果封装到VO中)便可实现想要的效果。简而言之,模型类对应数据库中“表”,VO类对应前端具体视图(或者说VO类对应数据库中“视图”)。

其它常用术语

1. PO(persistant object) 持久对象:

  在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。

2. VO(value object) 值对象:

  通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。

3. O/R Mapper 对象/关系 映射:

  定义好所有的mapping之后,这个O/R Mapper可以帮我们做很多的工作。通过这些mappings,这个O/R Mapper可以生成所有的关于对象保存,删除,读取的SQL语句,我们不再需要写那么多行的DAL代码了。

​​​​​​​

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212523.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午7:51
下一篇 2026年3月18日 下午7:52


相关推荐

  • 深入浅出JVM调优,看完你就懂

    深入浅出JVM调优,看完你就懂深入浅出JVM调优基本概念:JVM把内存区分为堆区(heap)、栈区(stack)和方法区(method)。由于本文主要讲解JVM调优,因此我们可以简单的理解为,JVM中的堆区中存放的是实际的对象,是需要被GC的。其他的都无需GC。下图文JVM的内存模型从图中我们可以看到,1、JVM实质上分为三大块,年轻代(YoungGen),年老代(OldMemory…

    2022年6月1日
    36
  • 基于mpvue搭建一个小程序

    基于mpvue搭建一个小程序mpvue是一套定位于开发小程序的前端开发框架,熟悉vue基本语法即可开发,没有原生小程序开发的思维转换1.安装vue-cli$npminstall–globalvue-cli2.创建一个基于mpvue-quickstart模板的新项目vueinitmpvue/mpvue-quickstartmy-project开始选择题,一路回车也是没问题的3.进入项目文件…

    2022年5月7日
    61
  • 百度ai文心一言怎么样了,百度文心ernie

    百度ai文心一言怎么样了,百度文心ernie

    2026年3月12日
    3
  • Eclipse使用时遇到一直在Validating中的解决办法

    Eclipse使用时遇到一直在Validating中的解决办法第一次从服务器检出大型 web 项目时出现了 validating 中 一直卡死不动 因此百度查找了很多说法和解决方案 先总结如下 一 什么是 Eclipse 的 Validating Eclipse 安装之后一般是默认设置好了 validation 允许软件对当前项目程序逐一检查 其实就是一个软件自动检查 校验代码等功能 针对小型项目 代码量不大一般没什么问题 针对大型项目可能会出现过程太漫长的情况 二 可不可以关闭这项功能 答案是肯定的 这项功能并没有关键性的作用 我们可以关闭它 这样就不会出现漫长等待自

    2025年9月24日
    8
  • 发挥人的主观能动性必须的前提是_发挥人主观能动性的基本途径是

    发挥人的主观能动性必须的前提是_发挥人主观能动性的基本途径是曾任百度研发工程师。2015年加入多点在线科技有限公司,任大数据团队负责人、高级架构师。负责研发了夜神App推荐系统、多点BI平台、AiAdmobi广告平台、RTB投放系统、CTR预估及用户画像等。与阿里云的各种大数据服务深度结合,熟悉Maxcompute、机器学习、推荐系统等服务。也熟悉基于EMR上开源工具的使用,包括Spark,Yarn,…

    2025年7月9日
    4
  • centos7关闭防火墙的命令(linux系统防火墙关闭)

    一、CentOS6关闭防火墙的命令//临时关闭防火墙serviceiptablesstop//禁止开机启动防火墙chkconfigiptablesoff 二、CentOS7关闭防火墙的命令  CentOS7与 CentOS6在关闭防火墙的命令上,有了很大的区别。具体如下:1. CentOS7使用systemctl来运行命令,而Ce…

    2022年4月11日
    216

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号