0

目前我在一家拥有 6-7 个 Java EE 项目的公司工作。它们是多模块 maven 项目,它们都相当大并且服务于不同的目的。因此,它们的模型非常不同,但大部分数据都存储在同一个数据库中。

对我来说,问题在于,由于存在一些重叠区域,它们只是将现有的 DAO 一直注入到依赖链中。所以我有

A-parent
 -A-JPA
 -A-DAO

B-Parent
 -B-JPA
 -B-DAO
 -A-JPA
 -B-DAO

等等,等等。他们实际上只使用了其他项目模型和各自 DAO 的 2%。

我试图通过简单地复制所需的实体(并且只包括真正需要的东西的字段/映射)来尝试解耦这些依赖关系,这样同一个 EJB 就不会部署 7 次(或集群时更多),但显然我没有提出令人信服的论点。任何人都可以帮我指出一篇关于这种情况的最佳实践的文章,或者帮助提出要点来向他解释。

TLDR:我希望每个项目都有自己的实体集,即使有很小的重叠也可以减少项目之间的依赖关系,并确保我们不会部署相同的 EJB 7 次。我的老板认为这些不必要的耦合并没有错。我是不是无缘无故为此大肆宣扬?谢谢!

4

1 回答 1

0

如果它是为各种应用程序维护的单个数据模型,则持久性实体(甚至它们的 DAO)可能被视为该数据库的 Java API,我会将其放在一个中央组件中。一些组织甚至可能从数据库向上推动设计,并对持久性实体进行逆向工程,在这种情况下,它们对于不同的用户将是相同或相似的。

这样的中心组件是一个库(被其他组件重用)还是它自己的 EJB(被其他组件调用),我将取决于应用程序所需的事务和缓存行为,以及您如何看待职责的组织方式。在一个项目中,我们强烈坚持每条数据只能由单个组件(服务或 EJB)维护的规则,而其他数据则必须通过该单个组件。

如果它是一个公共域模型,但每个 EJB 都为此实现了自己的数据存储,那么域模型可能是共享的,而我不会共享持久性实体。然后您将讨论在不同组件之间共享域模型。从不同的子域中看待世界的方式可能略有不同,我觉得你最终设计的域在不同的子系统中略有不同,因此我可能会投票反对重用。

每个人的里程可能会有所不同,根据特定项目的实际情况,我可能会看到不同的事情。

于 2013-09-19T22:19:12.210 回答