给软件行业带来了春天——揭秘Spring究竟是何方神圣(一)
给软件行业带来了春天——揭秘Spring究竟是何方神圣(二)
给软件行业带来了春天——揭秘Spring究竟是何方神圣(三)
给软件行业带来了春天——揭秘Spring究竟是何方神圣(四)
给软件行业带来了春天——揭秘Spring究竟是何方神圣(五)
在Spring项目中,不同的层次往往负责不同的任务。Controller层通常负责处理用户请求和响应,Service层则承担着业务逻辑的处理和管理,DAO层负责与数据库交互等等。本文将深入探讨这些关键层的作用与功能,帮助读者更好地理解它们在软件开发中的重要性和运作原理。
Util层就是存放工具类的地方,对于一些独立性很高的小功能,或重复性很高的代码片段,可以提取出来放到Util层中。
POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。
用法:
DTO:数据传输对象,Service或Manager向外传输的对象
用法:
VO(View Object):业务层之间数据传递的对象,把某个指定页面(或组件)的所有数据封装起来。
**view(视图):**一般里面存放的是对实体表的映射类(视图类),是用来给前端用的。
用法:
XxxVO不具体属于哪个层,而是POJO在数据传递中的数据形式。简而言之,就是接口之间传递的数据封装。
DTO与view的用法相同,但是叫法不同。
例如
表里面有十几个字段:id,name,age……
页面需要展示三个字段:name,age,此时可以使用view来存储这几个字段,
在view包(一般放在controller层)中定义user_view类,将user表中的name、age存入user_view视图,这样在进行操作时只需调用视图表,就可以完成相对应的操作.
简单来说,我们不需要把整个PO对象的全部字段传输到客户端,而是可以用DTO重新封装,传递到客户端。此时,如果这个对象用来对应界面的展现,就叫VO。
BO(Business Object):业务对象,可以由Service层输出的封装业务逻辑的对象。
用法:
Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用Map类来传输。
用法:
domain = 域
域是一个大范围,例如,一个商城项目,商城主要的模块就是用户,订单,商品三大模块,那么这三块数据就可以叫做三个域。再例如一个招聘网站的项目,如简历域包括工作经验表、项目经验表、简历基本信息表。在domain包中,就可以定义一个大的简历对象,将三个表的内容整合在一个对象中,作为整体操作。
entity = 实体
严格和数据库相对应,数据库中有什么字段,entity包中的类就有什么字段。entity包中的类是必须和数据库相对应的。
比如user表中有name、id、age,则entity包中对应的同名类也只有这三个同名属性,且数据类型也必须一致。不能数据库存的是long类型,user类中的属性为string类型。
model = 模型
当用model当包名时,一般里面存的是实体类的模型,是用来给后端用的。(一般model包放在service层)
比如user表中有name、id、age等信息,前台页面只需要显示姓名,如果将Entity全部传给前台,产生了许多无用的数据,使用model就可以解决该问题。前台需要什么数据,model就包含什么数据就行了。
注意点:
DAO全称是(Data Access Objects) ,数据库访问对象,主要的功能就是用于进行数据操作的,在程序的标准开发架构中属于数据访问层的操作。
可以简单理解为一张数据表,就有一个DAO与之对应,与数据库的操作,增删改查等方法。举例:对于user类,其对应的dao包就是对user表中数据的增删改查方法。
DAO层可以实现对数据的持久化操作,例如通过数据库访问、网络访问或者文件访问等方式。它提供了一种抽象的数据访问接口,使得业务逻辑可以通过DAO的接口来访问数据,而不需要关心具体的数据访问实现方式。
Mapper模式通常是指对象-关系映射(ORM)中的组件。
它负责将领域对象和数据库表之间进行映射,实现数据的读取和写入。Mapper将数据库操作转换为对象操作,屏蔽了底层数据库的细节,使得开发人员可以使用面向对象的方式操作数据。
它可以处理对象与关系型数据库之间的转换,包括查询、插入、更新和删除等操作。
异同点:
Service层:服务层
由于Dao里面存放了对表操作的方法,entity类中存放了映射表的POJO类。Service的作用就是将Dao和entity类整合起来,进行再次封装,封装成一个方法,我们调用这个方法,就实现了对某个表的增删改查操作。
Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求;
而Service,则是专注业务逻辑,对于其中需要的数据库操作,都通过Dao去实现。
Controller
负责请求转发,接受页面传递过来的参数,根据参数的不同,是调用不同的Service层方法进行操作,操作完成后将返回结果传递给页面。