为了不误导其他人,这篇文章不要看了,我觉得还是参考领域模型,做一定的简化。
技术领域概念是不缺的。
dao、domain、repository、service、bean、component...,repository和component是spring中的概念,因为互相有关联,我也拉进来。
首先声明我写这个东西不是为了给出我的建议,只是为了梳理思路,一会在内部讨论,并且会在我们公司统一标准。还有一点,我纯粹是为了练练写东西的能力。
这其中无非是对数据对象及其操作的分层,为了让代码更加好读更加好维护。那么我们想数据对象和操作都会被谁用到?一般是某个controller调用一些操作,完成数据对象的增删改查。这些操作就是增删改查或者增加重组,操作的目标和结果就是对象及其集合。这里的对象不一定是一个数据库实体,也可能是文件实体或者中间实体。所以我简单分成三类
domain:对应数据库实体setter,gettter和toString()没有其他方法--工具生成
bean:对应非数据库对象,除了setter,gettter和toString()没有其他方法
repository:对应一般开发中的dao,是对domain操作的类和bean操作类。--工具生成
service:我认为还是能提供一些公共服务的类。
biz:完成对repository的的组合调用。
在我设计的框架中,没有domain的概念,我用一个通用的对象BOBean,他实际上是一个map,我认为可以很好的对应关系数据库的一条记录,对kv数据库也是一样的。我为什么要创建一个domain呢?我和其他技术人讨论几次,他们都不能给我一个很好的理由。说实话,我对过分分层有点反感,我看过一个开源项目,应该是一个很牛的人,我从代码也可以看出来,但是他每个包下都是接口,然后有个对应的实现。有的实现是空的,如果是机器自动生成的,我无话可说,如果是人为写的,我觉得对方有洁癖,太拘泥于教科书。我看了几个空的java类,难道你说好维护吗?我是不是也要看一看呢?