对《阿里巴巴java开发手册》中关于分层领域模型规约 有个疑问:DO(Data Object):与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
那如果是类似:
select id, avg(grade) as avg_grade
from s;
查出的avg_grade不是与数据库表对应的字段,是应该将这种字段封装到DTO里,然后DAO层返回该DTO吗?
(用了mybatis框架)
个人观点:
1、把DO定义成与DB里表映射,这个太过狭隘,DO里的Data应该是个泛指,而不仅仅是数据库里持久化下来的数据,DTO/VO这些都应该是Data,只是可能没有持久化下来而已
2、如果要映射DB表的话,感觉用PO(Persistence Object, 持久化对象)更合适些
3、如果要定义关系的话,DO是POJO的扩展,同时DO是PO/BO/DTO/VO这些统称
不用完全把规约当成教条,这种情况可以视为数据库层有一个计算后的字段,只是没有实际写到库里,sql查到后直接放到dao要传出的do就好
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。