我正在尝试通过打包到单独 jar 中的功能将我的应用程序划分为模块,例如 feature-a.jar、feature-b.jar 等。
单个功能 jars,例如 feature-a.jar 应该包含一个功能的所有代码,包括 jpa 实体、业务逻辑、rest api、单元测试、集成测试......等。
我遇到的问题是 JPA 实体之间的双向关系导致 jar 文件之间的循环引用。例如,客户实体应该在 customer.jar 中,订单应该在 order.jar 中,但是客户引用订单和订单引用客户,这使得很难将它们拆分为单独的 jars/eclipse 项目。
我看到的用于处理 JPA 实体中的循环依赖项的选项:
- 选项1:将所有实体放入一个jar/一个项目中
- 选项 2:不要映射某些双向关系以避免跨项目的循环依赖。
问题:
- 您使用什么规则/原则来决定何时进行双向映射与不进行?
- 您是否能够按功能将 jpa 实体分解为他们自己的项目/jar,如果可以的话,您是如何避免循环依赖问题的?