JPA模块化和实体关系

时间:2014-01-10 16:13:08

标签: java jpa modularity

我正在尝试将monolitic ERP拆分为模块(销售,库存,财务......),以便它们可以作为一个单元或任何组合出售。 因为我正在使用JPA,所以当处理外键时会出现问题,因为它们被表示为集合。 如果每个模块在一个独立的jar文件中都有自己的一组实体,那么它们之间如何相互关联?我应该摆脱FK吗?如果是这样,继续使用JPA有什么意义?

1 个答案:

答案 0 :(得分:1)

我认为你有三个选择,没有一个是防弹:

  1. 以某种方式分享共同的实体。例如,非常清楚的是Customer实体用于每个包中。当然,最好的方法是将所有实体打包在实体jar中,并在销售其他包时提供它。毕竟你卖的是业务逻辑,而不是实体映射。

  2. 做一些丑陋的抽象,摆脱FK。这样您就必须更改代码。例如,您可以使用嵌入式(relatedEntityClass,relatedEntityId)而不是将实体与其他模块相关联。例如,使用此解决方案,当您需要加入/急切加载其他实体时,您将遇到问题。

  3. 销售整个代码并使用一些密码/在线激活来启用模块。