我的service.Impl类:
@Service
public class HevenServiceImpl implements IHevenService {
/*
*
* Injecting DAO
*/
@Resource
private HevenRepositoryDAO repository;
@Resource
private DecompteRepositoryDAO repository2;
有什么影响?我们可以得到脏读问题!!?
答案 0 :(得分:0)
从字面上看,我们为每个服务类使用一个存储库。有关示例,请查看以下代码。
@Service
public class SessionServiceImpl implements SessionService {
@Autowired
private SessionRepository sessionRepository;
}
为什么你不能在这里遵循相同的规定。什么阻止你这样做。因为这可能是您的应用程序中的设计缺陷。如果使用JPA成功映射类之间的关系,您应该能够坚持这种方式。如果您可以向我展示您的域类,我可以帮助您使用JPA映射它们,以便您最终得到我在这里提到的方式。希望这可以帮助。快乐的编码!
答案 1 :(得分:0)
技术上是的,你可以!但你应该遵循单一责任原则。这意味着,不要让你的服务层知道存储库,而是在它们之间有一些管理层(比如ServiceManager)。 ServiceManager将调用不同的类集(例如RepoManager)。每个RepoManager处理一个存储库并公开函数来执行所有低级别的事情(可以在此处理具有事务管理,重试,缓存等的CRUD操作)。您的ServiceManager应该处理多个RepoManagers并具有业务逻辑。服务的意义。应该只是将调用委托给适当的管理人员,并且可以做一些其他的事情,比如在一个地方进行异常处理等。这意味着很多额外的类,在相当简单的组件中不值得,但作为你的应用程序/组件增加了很多价值增长。使用您自己的判断至少将服务层与存储库分开。