各位:
这两天我在做代码走查,发现有些同志还在写DAO,觉得非常没有必要。
先说说DAO的来源,在远古时代(2-3年前),Session Bean大行其道的时候,数据组装是一个很大的问题,因为大家都在用实体Bean和VO,如果让数据组装逻辑弥散到业务逻辑层,会使业务逻辑层变得非常fat,巨fat,大家可以看看我们写的TopTais2版软件,虽然它没有使用实体Bean,其中大量的使用到了实体转换的get、set。时代变化了,思路变化了,我们Spring了,彻底的HB了,我们的实体既是PO(persistent object,由HB帮我们装载的),又是VO(value object,当HB的Session断开之后,这个PO实体对象就是一个经过HB增强过的VO了),更加是DTO(Data Transfer Object,数据传输对象,可以远程传递的数据对象,必须实现序列化接口,是远古时代的定义),因此我们没有实体转换。
我们是有层次的,View、Process、Domain,就算是有实体转换,我们也是在Domain层中完成转换,而且Domain层就是干这个活的,领域么,如果谁不知道领域模型是干什么的,请在google上查找DDD这本书——领域驱动开发。
编程实现上,我们都Spring了,继承了HibernateTemplate了,DAO层里面剩下了什么呢?就剩下一行程序了。
程序复用上是不是有存在的理由呢?上面说到了,都Spring了,服用一个Spring的API和复用自己的API有区别么?
啰嗦了半天,起始就是想从多个方面说明一点,DAO无用了,大家就别套用老旧的模式了。