针对事务的讨论

lovejdon 09-07-24

在JDON6.0发布的时候BANQ谈过了关于事务注解的问题:
<!--
关于为什么不增加@Transaction支持注解的说明:

使用Jdon框架可以使用事务机制,在代码中直接写JTA调用就可以(可见JiveJdon源码),那为什么Jdon框架不直接@Transaction注解呢?

主要是设计理念不同:我个人一直认为:事务是软件不可伸缩的罪魁祸首,给一段代码标记上事务,实际表明,这段代码中方法操作就是串行化的。我们可以使用基于内存对象模型的并发锁来替代事务操作,事务最后就异化为专为数据库操作准备的技术。

既然是为数据库等资源准备的技术,为什么要上升到业务层呢?业务层完全可以基于缓存中领域模型对象的并发锁机制来实现,更有甚者,可以采取云计算框架来帮助实现。实现方式见:http://www.jdon.com/jivejdon/thread/36633.html

所以,事务在某种程度上代表串行化计算,和云计算 异步处理 并行计算等概念是矛盾的。我们必须为降低事务粒度而和业务进行某种博弈,这时框架不能在其中再偏向事务串行化阵营。而EJB框架,以及整合Hibernate后的Spring框架,业务层缺省是事务的,是偏向事务阵营的。
-->
我很支持您的这种说法,个人认为事务确实是基于数据库的一种实现手段,上升到业务层确实是违背了DDD的思想
但是您提到了一点,采用基于缓存中领域模型对象的并发锁机制来实现,我迷惑的就是如何来实现您说的这种方式,在业务层控制住领域模型的对象问题.可否举例说明下,或者能提供详细的相关资料,本人很想模拟实现下...谢谢了!