DTO层的作用是为了隔离Domain Model:
让DoMain Model的改动不会直接影响到UI;保持Domain Model的安全,不暴露业务逻辑
有两个方案可以省略DTO层,又能起到DTO的作用:
1 继承:定义失血模型的Model,然后再做一个从Model继承的代理类 ,代理类里实现业务逻辑。贫血模型的Model单独为一个DLL,代理模型另起一个DLL。Client端只能引用贫血模型的DLL,这样就达到了隔离的目的,又省略了Contract层。
2 接口:为Domain Model做一个贫血模型的接口,接口单独为一个DLL,Client端只引用接口DLL。
这两种方案的核心思想都是让数据字段与业务方法分离,然后只对Client端公开数据部份。但这种思想会导致域模型趋向事务脚本模型,所以都不可取。
你好,按照标准来说:
1、entity里的每一个字段,与数据库相对应,
2、dto里的每一个字段,是和你前台页面相对应,
3、VO,这是用来转换从entity到dto,或者从dto到entity的中间的东西。
举个例子:
你的html页面上有三个字段,name,pass,age
你的数据库表里,有两个字段,name,pass(注意没有age哦)
而你的dto里,就应该有下面三个(因为对应html页面上三个字段嘛)
private string name;
private string pass;
private string age;
这个时候,你的entity里,就应该有两个(因为对应数据库表中的2个字段嘛)
private string name;
private string pass;
到了这里,好了,业务经理让你做这样一个业务“年龄大于20的才能存入数据库”
这个时候,你就要用到vo了
你要先从页面上拿到dto,然后判断dto中的age是不是大于20,如果大于20,就把dto中的
name和pass拿出来,放到vo中,然后在把vo中的name和pass原封不懂的给entity,然后根据
entity的值,在传入数据库,这就是他们三个的区别
PS,VO和entity里面的字段应该是一样的,vo只是entity到dto,或者dto到entity的中间过程,如果没有这个过程,你仍然可以做到增删改查,这个就根据具体公司来的,纯手打,望采纳
以上就是关于javaEE开发为什么要用到DTO层全部的内容,包括:javaEE开发为什么要用到DTO层、java项目中VO和DTO以及Entity,各自是在什么情况下应用的、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!