2009年12月09日 00:10 "xiaoqianglinsen"的内容
我的意思是:是不是需要有个中间的东西(DTO?)来把领域对象转化为一个贫血的对象(只包含值),然后其他层(UI,Repository之类)接受这个贫血对象并进行呈现,或者保存到数据库.
呵呵,这个DDD没有具体规定,我个人实践是:不做DTO或所谓VO,对象太多,增加复杂性,一旦领域对象一变,修改面辐射大,在Jdon框架中,就直接由领域对象提将自己交给UI或Repository。
当然,你可以在领域对象中做一个方法,将自己的一部分属性或值打包成值对象交给UI和Respository。
我个人认为:ORM在DDD实践中非常碍手碍脚,设计一个模型有三个因素需要考虑:模型是否符合需求?模型是否符合ORM机制?模型是否能真正通过ORM实现数据库保存?
这三个问题足够让任何一个聪明人精神崩溃,所以,受Domain Events启示,将Domain层和技术架构彻底分离,也就是将模型和ORM 持久机制等彻底分离。
如果使用Neo4j这样内存KVS比ORM要降低开发难度,就不要考虑模型需要讲究ORM机制,也不用考虑是否持久等等底层问题,大大降低负担。
NEO4J 独特的NoSQL graph数据库
所以,Qi4j这样DDD框架直接使用NEO4j替代ORM作为持久层,这是一个革命性跳跃,是我们摆脱关系数据库的中世纪黑暗的一个跳跃。
忘记Scala,Qi4J是下一个 Java?