微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 方面是否替换存储库?

我刚刚开始尝试Spring Roo.它可以很好地帮助构建具有集成持久性的域模型.由于它在方面添加了持久性功能,我开始考虑以下问题:

Roo在一个方面向实际的类/实体添加finders(从数据库中加载满足变量条件的类的实例).在DDD中,这是IMHO的存储库的责任.存储库是显示在设计中的显式类.当然,作为一个方面,存储库功能隐藏在实体中并且几乎不可见.

所以这里有一个问题:一个方面是否是显式存储库类的真正替代品? Roo AOP方法有任何缺点吗?

最佳答案
用户的角度来看,向域类添加查找器会感觉更自然,但它会混合您的图层. Grails使用相同的方法添加静态finder *()save(),…方法.

除了aestetics之外,它不会在Web应用程序设置中使用时具有实际缺点:
您的域类现在绑定到您的数据库.如果通过RMI或httpinvoker将这些对象传输到富客户端,则客户端不能并且通常不会使用find *方法,因为客户端上没有可用的会话/数据库连接.

我通常更喜欢允许域类引用服务层接口以防止贫血域模型(http://martinfowler.com/bliki/AnemicDomainModel.html).这有其自身的一些缺点,但至少提供了明确的界限.在客户端上,服务接口后面的具体实现可以只代理对服务器的所有方法调用(或者只使用带有spring remoting的synamic代理或类似的).

所以回答你的问题:它可能是一个替代品,但你应该知道可能的负面后果,使你的域类(即你的核心业务逻辑)在系统之间的可移植性降低.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐