spa*_*spa 5 java aop spring domain-driven-design spring-roo
我刚刚开始尝试Spring Roo.它可以很好地帮助构建具有集成持久性的域模型.由于它在方面添加了持久性功能,我开始考虑以下问题:
Roo在一个方面向实际的类/实体添加finders(从数据库中加载满足变量条件的类的实例).在DDD中,这是IMHO的存储库的责任.存储库是显示在设计中的显式类.当然,作为一个方面,存储库功能隐藏在实体中并且几乎不可见.
所以这里有一个问题:一个方面是否是显式存储库类的真正替代品?Roo AOP方法有任何缺点吗?
小智 2
从用户的角度来看,将查找器添加到域类感觉更自然,但它会混合层。Grails 使用相同的方法,添加 static finder*() save(), ... 方法。
除了美观之外,当不在 Web 应用程序设置中使用时,它可能还有实际的缺点:您的域类现在与您的数据库绑定在一起。如果您通过 RMI 或 HttpInvoker 将这些对象传输到富客户端,则客户端不能而且通常可能不会使用 find* 方法,因为客户端上没有可用的会话/数据库连接。
我通常更喜欢允许域类引用服务层接口,以防止贫乏的域模型(http://martinfowler.com/bliki/AnemicDomainModel.html)。这有其自身的一系列缺点,但至少提供了一个清晰的边界。在客户端上,服务接口背后的具体实现可以将所有方法调用代理到服务器(或者仅使用具有 spring 远程处理或类似功能的同步代理)。
因此,回答您的问题:它可能是替代品,但您应该意识到可能的负面后果,这些后果会使您的域类(即您的核心业务逻辑)在系统之间的可移植性较差。
归档时间: |
|
查看次数: |
179 次 |
最近记录: |