项目之间共享的Java域对象

时间:2014-07-24 08:00:03

标签: java spring maven

我有两个具有相同域对象的java项目。 第一个项目是webapp的管理。第二个项目是webapp。

我选择了这种方法,以便在不停机的情况下为我的网络应用部署管理。

因此两个项目都使用相同的数据库。我使用spring-data并使用@Entity标记实体。

我的问题是:在每个项目中都有一些不复制域对象的方法吗? 例如,使用域对象创建另一个maven模块并将其标记为依赖项。 (但是在这种情况下@Entity仍然有效吗?)。

3 个答案:

答案 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存储库和分别发展模块版本的诱惑。(只是建议)