目前,我在一家拥有6-7个Java项目的公司工作。它们都是多模块的maven项目,都相当大,服务于不同的目的。因此,它们的模型非常不同,但大部分数据都存储在相同的数据库中。
对我来说,问题在于,由于有一些重叠的区域,它们只是将现有的DAO一直注入到依赖链的上游。所以我有
A-parent
-A-JPA
-A-DAO
B-Parent
-B-JPA
-B-DAO
-A-JPA
-B-DAO
他们实际上只使用了2%的其他项目模型和各自的DAO。
我试图通过简单地复制所需的实体(并且只包含真正需要的内容的字段/映射)来解耦这些依赖项,这样同一个EJB就不会部署7次(在集群时会部署更多),但显然我并没有提出令人信服的论点。有没有人可以帮我推荐一篇文章,里面有关于这种情况的最佳实践,或者可以帮我提出一些观点来向他解释。
TLDR:我希望每个项目都有自己的实体集,即使有很小的重叠,以减少项目之间的依赖,并使其不会部署相同的EJB 7次。我的老板认为,将它们不必要地结合在一起没有什么错。我是不是在无缘无故地小题大做?谢谢!
发布于 2013-09-20 06:19:12
如果是为各种应用程序维护的单一数据模型,则持久性实体(甚至是它们的DAO)可能被视为该数据库的Java API,我将其放在一个中央组件中。一些组织甚至可能从数据库向上驱动设计,并对持久化实体进行逆向工程,在这种情况下,不同用户的持久化实体将相同或相似。
无论这样的中央组件是库(由其他组件重用)还是它自己的EJB (由其他组件调用),我认为这取决于应用程序所需的事务和缓存行为,以及如何组织职责。在一个项目中,我们强烈支持这样的规则,即每个数据段只能由单个组件(服务或EJB)维护,而其他数据段则必须通过该单个组件。
如果它是一个公共的域模型,但是每个EJB都为此实现了自己的数据存储,那么该域模型可能是共享的,而我不会共享持久性实体。然后讨论如何在不同组件之间共享域模型。从不同的子域看世界的方式可能会略有不同,我觉得你最终会在不同的子系统中设计略有不同的域,因此我可能会投票反对重用。
每个人的里程都可能不同,考虑到特定项目的实际情况,我可能会有不同的看法。
https://stackoverflow.com/questions/18905311
复制相似问题