![]() |
1
12
您可以让Spring使用AOP将您的服务注入到Hibernate实例化的实例中。您还可以使用拦截器让Hibernate执行同样的操作。 看见 http://www.jblewitt.com/blog/?p=129 关于“让一个Foo以事务方式做一些事情很烦人”,我希望您的服务实现会知道/关心事务,如果您现在正在域模型中使用服务接口,那么现在应该不会那么烦人了。 我怀疑,决定何时保存域模型取决于它是什么以及您正在使用它做什么。 FWIW我有一种倾向,就是产生同样类型的贫血结构,但我正在达到这一点,现在我知道有可能用一种更明智的方式来做。 |
![]() |
2
10
听起来您的应用程序是围绕过程编码原则设计的。这将阻碍您尝试进行的任何面向对象编程。 Foo可能没有它控制的行为。这也是可以接受的 不 使用 Domain Model Transaction Script 这种模式有时很有意义。 当这种逻辑开始增长时,问题就出现了。将事务脚本重构为域模型不是最容易的事情,但肯定不是最困难的。如果您有大量关于Foo的逻辑,我建议您转到域模型模式。封装的好处使得理解发生了什么以及谁参与了什么变得非常容易。
如果你想
先好好想想。它是 非常 可能一切都已经在正确的位置上了。。。现在。 祝你好运 |
![]() |
3
5
^我假设FooService执行DB调用,这在ORM中执行起来太慢了,比如选择与给定Foo共享属性X的最新Foo。这就是我所见过的大多数工作方式。 实例
你会朝着这样的方向发展:
我希望你会同意这一点,它似乎已经变得更富有了。现在,您正在进行另一个数据库调用,但如果您将学校缓存在会话中,则惩罚是可以忽略的。我担心任何真正的OOP模型的效率都会低于您正在使用的贫血模型,但是通过代码清晰性减少bug应该是值得的。一如既往,YMMV。 |
![]() |
4
0
我向你推荐这本书 用例驱动的UML对象建模 道格·罗森博格和马特·斯蒂芬斯合著。它讨论了ICONIX过程——一种软件开发方法,也讨论了贫血领域模型。这也是Martin Fowler在其网站上开发的一个主题 https://www.martinfowler.com/bliki/AnemicDomainModel.html . 但是,当使用SpringFramework和/或SpringBoot时,我们应该如何实现呢?这也是我试图弄清楚的。 |
![]() |
Chirag Arora · 如何在构造函数中使用注入的依赖关系? 9 月前 |
![]() |
sree · Spring Mongo仓库:通过传递id列表来获取对象列表 10 月前 |
![]() |
RobertC · Spring中默认实现的Autowire接口 1 年前 |