[领域模型] 领域模型--Now mission impossible[Java]

[领域模型] 领域模型--Now mission impossible[Java]
   潜水N久了,冒个泡,几年前就在javaeye参与过关于领域模型的讨论,越讨论我就越对这个模型越没有信心。
   领域模型是什么? 想到一个笑话: 工作时把我当超人,加薪时把我当隐形人。领域模型就是为实现这么个理想而提

出来的。什么贫血什么充血,其实就是要实现 对象化编程,把数据库当做隐形人。再说白点:就是数据库在与不在一个

样!对象在故我在,所有的方法都自然而然的加注到这么个对象上。
   领域模型的理想:
    还是银行转账这么个例子:
           事务开始:
           finder.find(帐户A)
           帐户A.减(500)。
           finder.find(帐户B)
           帐户B.加(500)。
           流水帐户.记录(XXX)
           事务结束。
    
   但是愿望是美好的,现实是残酷的 持久化是一座难以翻越的高山。就我浅薄的知识范围内来说,我没有找到一个很好

的技术解决方案(java)
          (1)事务范围内所有的对象的状态都要记录。
          (2)事务范围内所有的对象的变化都要记录。
          (3)事务结束是所有变化了的对象都要回写入数据库。
   上面这三件事看似简单,其实也就是所有数据库操作的全部,即使是hibernate也没做到这一点:
          (1)事务开始时就要建立一个对象图。
          (2)访问过的所有对象都要纳入这个事务发起的对象图中
          (3)无侵入的记录对象图中所有字段的变化。
          (4)回写变化了的字段【有可能是增量的】。
          (5)当出现异常时候,需要回滚【对象图是重建还是全部废弃?】
    如果持久化框架能做到上面几点,才能谈真正的领域对象。

    目前来说hibernate已经做到了一部分对象图的功能,但是仅仅是一小部分。


    另外我在论坛上经常看到DAO可以隔离数据的存贮,但我要说的是你如果用上了hibernate的话,想要随时替换成ibats几乎是不可能的,除非hibernate的大部分功能,你不用。

     

你可能感兴趣的:(java,DAO,Hibernate,领域模型,笑话)