相关疑难解决方法(0)

春天和贫血领域的模型

所以,我注意到我绝对倾向于模式化我的Spring/Hibernate堆栈对象,如下所示:

  • Foo控制器调用"FooService"
  • FooService调用FooRepository.getById()方法来获取一些Foos.
  • FooRepository进行一些Hibernate调用来加载Foo对象.
  • FooService与Foos进行一些互动.它可以使用相关的TransactionalFooService来处理需要在事务中一起完成的事情.
  • FooService要求FooRepository保存Foos.

这里的问题是Foos没有任何真正的逻辑.例如,如果每次Foo到期时都需要发送电子邮件,则不会调用Foo.expire().有一个对FooService.expireFoo(fooId)的调用.这有以下几种原因:

  • 从Foo获取其他服务和对象很烦人.它不是Spring bean,而是由Hibernate加载的.
  • 让Foo在事务上做几件事很烦人.
  • 很难确定Foo是否应该负责选择何时保存自己.如果你调用foo.setName(),foo应该保持更改吗?它应该等到你调用foo.save()吗?foo.save()应该调用FooRepository.save(this)吗?

因此,出于这些原因,我的Spring域对象往往是带有一些验证逻辑的美化结构.也许这没关系.也许Web服务可以作为程序代码.也许随着新功能的编写,创建以新方式处理相同旧对象的新服务是可以接受的.

但是我想摆脱这种设计,我想知道其他Spring使用的是什么呢?你是否用装载时编织等花哨的技巧来对抗它(我觉得不舒服)?你有其他的伎俩吗?你认为程序是好的吗?

oop spring

64
推荐指数
3
解决办法
4813
查看次数

标签 统计

oop ×1

spring ×1