java web开发中的术语domain和dto有什么区别
java web开发中的术语domain和dto有两个主要区别,即概念区别和作用区别。domain的中文解释是邻域或域,指的是直接从数据库查询出来的对象,作用是定义各种实体类以及它们之间的关系;而dto是指远程接口间的数据传输,常用于在程序的不同层之间传输数据。
1.概念区别
domain的中文解释是邻域或域,实际上是java web开发时存放数据库表映射对象;而dto全称是“Data transfer object”,是指远程接口间的数据传输。
而在java web开发中,domain实际指的是直接从数据库查询出来的对象;而dto是根据具体业务处理domain包装后的对象dto。
3.作用不同
domain是领域层,即项目所涉及到的业务逻辑和数据实体。在领域层中,可以定义各种实体类,如用户、订单等;也可以定义这些实体类之间的关系。
dto概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载。但在这里,泛指用于展示层与服务层之间的数据传输对象。dto常常用于在程序的不同层之间传输数据,例如在web层与服务层之间传播数据。
总的来说,domain更多地用于表示项目中的实体,而dto则是用于在不同层之间传输数据的对象。
延伸阅读
领域驱动模型dto的概念
领域模型中的实体类分为四种模型:VO、DTO、DO和PO,各种实体类用于不同业务层次间的交互,并会在层次内实现实体类之间的转化。其中,数据传输对象DTO(Data Transfer Object)是一个比较特殊的对象,它有两种存在形式:
名列前茅,在后端,它的存在形式是java对象,也就是在controller里面定义的请求参数,通常在后端不需要关心怎么从json转成java对象的,这个都是由一些成熟的框架帮你完成啦,比如spring框架;
第二,在前端,它的存在形式通常是js里面的对象(也可以简单理解成json),即通过ajax请求的那个数据体。这也是为什么把他画成横跨两层的原因。举个例子,xxxDTO,xxx为业务领域相关的名称。
DTO与BO或者DO的区别是DTO没有任何行为(方法),只是存储和提供它所拥有数据的查询(访问器和修改器)。DTO是简单对象,不包含任何需要测试的业务逻辑。

