我有两个具有相同域对象的java项目。 第一个项目是webapp的管理。第二个项目是webapp。
我选择了这种方法,以便在不停机的情况下为我的网络应用部署管理。
因此两个项目都使用相同的数据库。我使用spring-data并使用@Entity标记实体。
我的问题是:在每个项目中都有一些不复制域对象的方法吗? 例如,使用域对象创建另一个maven模块并将其标记为依赖项。 (但是在这种情况下@Entity仍然有效吗?)。
答案 0 :(得分:4)
就像你说的那样 - 创建一个包含所有JPA类(@Entity类)的maven模块(通常称为datamodel,infomodel或其他类似的东西)。
这个模型可以是一个完全独立的第三个项目(更多工作),或者更有可能选择2个项目中的一个作为模块的“所有者”,而另一个项目只是将其列为依赖项。在这两种情况下,您都需要考虑版本兼容性等问题(更新管理时会发生什么,而不是webapp和实体更改?谁更新数据库,如何确保旧代码仍可读/写? )
就工作而言,JPA课程在他们自己的jar中工作得很好。
答案 1 :(得分:0)
就像你提出的是一个很好的近似,分开两个不同的maven项目。
您尝试做的事情与Broadleaf Commerce的结构非常相似。它是一个使用Maven和Spring的多模块项目,是开源的,所以你可以看看它是如何构建的,看它是否有帮助。
Here您还有一个如何逐步实施的指南。希望它有所帮助。
答案 2 :(得分:0)
它表明您至少需要三个模块。 1st-带有实体注释域类的域模块; 2-应用程序本身取决于域模块; 第三-adm模块witch也取决于域。
现在,您拥有一个多模块Maven项目,您应该有一个第4个项目,正式将其他三个项目列为其子模块。
P.s .:抵制创建单独的git存储库和分别发展模块版本的诱惑。(只是建议)